c# - 按列对 DataTable 进行分组并转换为 List
问题描述
我有一个如下所示的 DataTable:
Category | Amount
Food | 10
Drink | 20
Clothes | 50
Drink | 30
Food | 40
Clothes | 5
我想按Category列对其进行分组,并将每个类似的分组转换为DataTable并将其放在List中。所以我需要有3 个数据表,如下所示:
数据表1
Category | Amount
Food | 10
Food | 40
数据表2
Category | Amount
Drink | 20
Drink | 30
数据表3
Category | Amount
Clothes | 50
Clothes | 5
关于如何实现上述目标的任何建议?我只能找到想要输出 1 个 DataTable 的问题。
解决方案
您可以通过这种方式使用 Linq to objects(和 Linq to Dataset)
List<DataTable> tablesByCategory =
table.AsEnumerable().
GroupBy(r => r.Field<double>("Category")).
Select(g =>
{
DataTable dt = table.Clone();
foreach (DataRow r in g)
{
dt.ImportRow(r);
}
return dt;
}).ToList();
推荐阅读
- php - 基于元素值的 Laravel 过滤器数组
- flutter - 为什么每当我将流添加到流控制器时,我的 then() 永远不会被调用?
- sql-server - 如何使用联合查询消除零
- google-sheets - 谷歌表格:帮助!我可以在不打开迭代计算的情况下解决循环依赖吗?
- html - 如何在文件路径中使用 id?
- java - JMS 消息路由器 - 变量(int 和 double)处理
- oim - OIM 12.2.1.3.0:如何为特定用户集或最终用户隐藏目录项(应用程序实例/角色)
- jquery-ui-datepicker - jQuery UI-Datepicker 禁用所有星期日,除了 1 个特定的星期日
- pandas - 复杂数据集的下采样问题
- reactjs - 如何仅在模态加载时获取数据