我有一个名为“DTHead”的DataTable,它有以下记录,
MIVID Quantity Value
------ ---------- --------
1 10 3000
1 20 3500
1 15 2000
2 20 3000
2 50 7500
3 25 2000
在这里,我需要将上面的DataTable分成三个基于MIVID的表,如下所示;
DTChild1:
MIVID Quantity Value
------- ---------- ---------
1 10 3000
1 20 3500
1 15 2000
DTChild2:
MIVID Quantity Value
------- ---------- ---------
2 20 3000
2 50 7500
DTChild3:
MIVID Quantity Value
------- ---------- ---------
3 25 2000
假设,如果Header DataTable包含4个不同的MIVID方法,那么应该根据MIVID创建4个Child DataTable。怎么做?
答案 0 :(得分:28)
使用LINQ to DataTable
按GroupBy
对第一列进行分组,并使用方法CopyToDataTable将行列表复制到DataTable
List<DataTable> result = DTHead.AsEnumerable()
.GroupBy(row => row.Field<int>("MIVID"))
.Select(g => g.CopyToDataTable())
.ToList();
然后,您可以按预期将结果作为DataTable列表获取。
答案 1 :(得分:0)
DataTable tbl = new DataTable("Data").AsEnumerable()
.Where(r => r.Field<int>("ParentId") == 1) // ParentId == 1
.Where(r => r.Field<int>("Id") > 3) // Id > 3
.Where(r => r.Field<string>("Name").Contains("L")) // Name contains L
.OrderBy(r => r.Field<int>("Id")) // Order by Id
.CopyToDataTable();