DataTable操作汇总

Posted drew

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataTable操作汇总相关的知识,希望对你有一定的参考价值。

1、排序

技术分享图片
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Age");//因为是字符串,所以排序不对
dt.Rows.Add("小明", "21");
dt.Rows.Add("小张", "10");
dt.Rows.Add("小红", "9");
dt.Rows.Add("小伟", "7");
dt.Rows.Add("小美", "3");
dt.DefaultView.Sort = "Age ASC";
dt = dt.DefaultView.ToTable();
View Code

 

2、dataTable根据列的值筛选出数据行

DataRow[] flightInfoRows = keyParaDt.Select("fli_id = ‘" + afliid + "");

 

3、dataRow[]转换为dataTable

DataTable flightInfo = flightInfoRows.CopyToDataTable();

 

4、复制dataTable,包含结构和数据

//克隆表的结构。但不复制数据
DataTable newDataTable = oldDataTable.Clone();
object[] obj = new object[newDataTable.Columns.Count];

for (int i = 0, count = oldDataTable.Rows.Count; i < count; i++)
{
       oldDataTable.Rows[i].ItemArray.CopyTo(obj, 0);
       newDataTable.Rows.Add(obj);
}

 或者

//克隆表的结构。但不复制数据
DataTable newDataTable = oldDataTable.Clone();

for (int i = 0, count = oldDataTable.Rows.Count; i < count; i++)
{
       DataRow row = newDataTable.NewRow();
       row.ItemArray = oldDataTable.Rows[i].ItemArray;
       newDataTable .Rows.Add(row);
}

注意以下的写法是错误的,报错“该行已经属于另一个表”,因为DataRow是引用类型的,不能同时被两个DataTable包含。

newDataTable.Rows.Add(oldDataTable.Rows[i]);

 

以上是关于DataTable操作汇总的主要内容,如果未能解决你的问题,请参考以下文章

在C#中进行DataTable操作:根据列数据插入一些汇总行

2016.2.28 DataTable用法汇总

C# DataTable多条件汇总

使用条件选择和汇总 DataTable 行

使用LinQ To Object把数组或DataTable中的数据进行向上汇总

asp.net c# 如何取出datatable指定行的值