根据Column值将DataTable拆分为2个或更多DataTable

我有一个名为“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。 这该怎么做?

使用LINQ to DataTableGroupBy对第一列进行分组,并使用方法CopyToDataTable将行列表复制到DataTable

  List result = DTHead.AsEnumerable() .GroupBy(row => row.Field("MIVID")) .Select(g => g.CopyToDataTable()) .ToList(); 

然后,您可以按预期将结果作为DataTable列表获取。