DataTable创建、数据的添加及数据记录的排序,检索,合并,分页,统计(整理)

来源:互联网 发布:电脑远程协助软件 编辑:程序博客网 时间:2024/04/29 17:40

一、新建数据表及数据的添加

 

        DataTable dt = new DataTable();
        dt.Columns.Add(column,Type.GetType("数据类型"));——如:System.String()

        dt.Rows.Add(数据);

 

二、排序
1 获取DataTable的默认视图
2 对视图设置排序表达式
3 用排序后的视图导出的新DataTable替换就DataTable
(Asc升序可省略,多列排序用","隔开)


DataView dv = dt.DefaultView;
dv.Sort = "id Asc,name Desc";
dt = dv.ToTable();

 

三、检索
1 设置查询字符串
2 使用Select方法获取到所有满足条件的数据行对象数组
(多项查询条件间,用and隔开.模糊查询使用 like %)
DataRow[] matches = dt.Select("(id<'003') and (name='名字11') and (number like '%2007%')");
string strName = matches[0]["name"].ToString();

 


四、合并
假定有2个DataTable:Dt1 , Dt2。表结构一样
将Dt2接在Dt1后可采用此方法
dt1.Merge(dt2);

 

或:

        DataTable dtAll = dt1.Clone();
        object[] obj = new object[dtAll.Columns.Count];
        for (int i = 0; i < dt1.Rows.Count; i++)   
        {   
            dt1.Rows[i].ItemArray.CopyTo(obj,0);   
            dtAll.Rows.Add(obj);   
        }   
        for (int i = 0; i < dt2.Rows.Count; i++)   
        {

            dt2.Rows[i].ItemArray.CopyTo(obj,0);   
            dtAll.Rows.Add(obj);   
        }

 

五、分页
PagedDataSource pds = new PagedDataSource();
                pds.AllowPaging = true;
                pds.DataSource = dvIntegralExpense;
                pds.AllowPaging = true;
                pds.PageSize = pager.PageSize;
                pds.CurrentPageIndex = pager.PageIndex;


                rptIntegralExpense.DataSource = pds;
                rptIntegralExpense.DataBind();


六、去除重复的行

  public DataTable SelectDistinct(string[] pColumnNames, DataTable pOriginalTable)
    {
        DataTable distinctTable = new DataTable();
        int numColumns = pColumnNames.Length;
        for (int i = 0; i < numColumns; i++)
        {
            distinctTable.Columns.Add(pColumnNames[i], pOriginalTable.Columns[pColumnNames[i]].DataType);
        }
        ArrayList currentArray = new ArrayList();
        foreach (DataRow currentRow in pOriginalTable.Rows)
        {
            DataRow newRow = distinctTable.NewRow();
            if (!currentArray.Contains(currentRow["Title"].ToString()))
            {
                currentArray.Add(currentRow["Title"].ToString());
                for (int i = 0; i < numColumns; i++)
                {
                    newRow[pColumnNames[i]] = currentRow[pColumnNames[i]];
                }
                distinctTable.Rows.Add(newRow);
            }
        }
        return distinctTable;
    }