我想知道如何将DataTable转换为Dictionary。我做了类似这样的事情。
using System.Linq;
internal Dictionary<string,object> GetDict(DataTable dt)
{
return dt.AsEnumerable()
.ToDictionary<string, object>(row => row.Field<string>(0),
row => row.Field<object>(1));
}
但我得到:
System.Data.EnumerableRowCollection不包含“ToDictionary”的定义,并且最佳扩展方法重载“System.Linq.Parallel.Enumerable.ToDictionary(System.Linq.ParallelQuery,System.Func,System.Collections.Generic. IEqualityComparer)”具有一些无效的参数
如何解决此问题?
谢谢
9条答案
按热度按时间iyr7buue1#
泛型方法
ToDictionary
有3个参数。您遗漏了一个参数,因此它不知道要做什么。如果您要指定所有参数,它应该是<DataRow, string, object>
。当然,如果不使用它们,编译器就能够推断出类型,因此不会出现错误。
velaa5lx2#
所有之前的答案都帮不了我,所以我做了这个:
而且效果很好!
ryoqjall3#
我更喜欢这种方法:
原因是这段代码还可以通过调用ToString方法来处理布尔值或其他数据类型。
注意,这返回了一个字典列表,如果你有每行的键,你可以把它修改成字典的字典。
迭代bool列可能如下所示:
pqwbnv8z4#
ToDictionary需要
IEnumberable<T>
作为第一个类型...您告诉它这是一个字符串,但这是错误的,它是IEnumerable<DataRow>
指定类型会使它变得混乱...请尝试以下操作...
mitkmikd5#
我找到了解决方案,但不知道为什么。我编辑了我的问题,完成了代码,只是为了让它清楚我在做什么,我改变了这个
jckbn6z76#
我想这会对你有帮助:
uujelgoq7#
给定的解决方案假定只有2列。如果您想要多列表示,则需要字典列表
58wvjzkj8#
Visual Basic语言
使用sql加载数据表并创建字典
9fkzdhlc9#
我发现上面的解决方案工作,但它的格式我的多行表2项只。
为了解决这个问题,我在codepper上找到了一些非常有用的东西
参考:codegrepper.com Convert DataTable to Dictionary in C#