是否有任何 LINQ 表达式可以将数据表转换为字典
本文关键字:数据表 转换 字典 任何 LINQ 表达式 是否 | 更新日期: 2023-09-27 17:57:09
我有很多情况下,我执行查询并获取数据表并将其转换为:
Dictionary<string, string>
或
Dictionary<int, int>
或
Dictionary<string, [Someobject]>
我可以用循环创建自己的函数,但我想看看是否有任何 LINQ 方法可以将数据表转换为字典,并且只为键和值传递 2 个 lambda(类似于您可以将 IEnumerable 转换为字典
您可以使用
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>
。