是否有任何 LINQ 表达式可以将数据表转换为字典

本文关键字:数据表 转换 字典 任何 LINQ 表达式 是否 | 更新日期: 2023-09-27 17:57:09

我有很多情况下,我执行查询并获取数据表并将其转换为:

 Dictionary<string, string>

 Dictionary<int, int>

 Dictionary<string, [Someobject]>

我可以用循环创建自己的函数,但我想看看是否有任何 LINQ 方法可以将数据表转换为字典,并且只为键和值传递 2 个 lambda(类似于您可以将 IEnumerable 转换为字典

是否有任何 LINQ 表达式可以将数据表转换为字典

您可以使用

AsEnumerable和ToDictionary:

例如,如果您想要一个字典,其中键来自 col1,值来自 col2:

table.AsEnumerable()
     .ToDictionary<int, string>(row => row.Field<int>(col1),
                                row => row.Field<string>(col2));

Linq附带了一个ToDictionary扩展方法,听起来像你所描述的。

编辑

至于将ToDictionary与DataTable一起使用:我不明白为什么不这样做。

DataTable dt = GetMyDataTable();
return dt.Rows.Cast<DataRow>().ToDictionary(r => r["KeyColumn"], r => r["ValueColumn"]);

你需要在那里进行强制转换,因为 DataTable.Rows 只是IEnumerable,而不是IEnumerable<DataRow>