c# - 根据列值将 DataTable 拆分为 2 个或更多 DataTable

标签 c# asp.net visual-studio-2010 datatable

我有一个名为“DTHead”的数据表,其中包含以下记录,

 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<DataTable> result = DTHead.AsEnumerable()
            .GroupBy(row => row.Field<int>("MIVID"))
            .Select(g => g.CopyToDataTable())
            .ToList();

然后您可以按照预期获得作为 DataTable 列表的结果。

关于c# - 根据列值将 DataTable 拆分为 2 个或更多 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12740353/

相关文章:

vb.Net & Access 是/否 sql 执行错误

visual-studio-2010 - Visual Studio 2010 数据库项目 - 未解析的同义词引用

c# - 为#C gRPC 使用具有通用名称的 TLS 凭据

c# - 如何将对象转换为在运行时提取的类型

c# - 以编程方式创建 Blob 存储容器

ASP.Net 还是 WPF (C#)?

c# - MVVMLight 中的交互性问题

c# - 溢出 : hidden hides content in placeholder object

c# - 如何在 docker 容器中运行 selenium chrome 驱动程序?

visual-studio-2010 - 在 "check in"进程中阻止特定文件?