C# 从 DataTable 创建子列表

C# Creating Sublists from DataTable

我有一个包含 SQL 查询结果的数据表。我想遍历 table 并根据字段中的相似结果构建子列表。我该怎么做?

比如我的DataTable有如下记录

颜色,计数

红色,1
蓝色,1
蓝色,2
红色,2
黄色,1

我希望能够将它们分组,这样我的结果就是

列表 1:

红色,1
红色,2

列表 2:

蓝色,1
蓝色,2

列表 3:

黄色,1

这可以使用 Linq 轻松完成:

var groups = table.Rows.Cast<DataRow>().GroupBy(z => z["Color"]).Select(z => z.ToList()).ToList();

for (int i = 0; i < groups.Count(); i++)
{
    Console.WriteLine("Group " + (i + 1).ToString());
    foreach (var item in groups[i])
        Console.WriteLine(item["Color"] + ",  " + item["Count"].ToString());
    Console.WriteLine("");
}

使用 Cast<DataRow>() 转换行允许您使用 Linq 枚举行。 GroupBy() 将行分组,它们共享相同的 Color 值。 Select() 将组作为列表获取。结果是包含您的组的列表(更具体地说,List<List<DataRow>>())。修改并投射结果以满足您的要求。