我需要一个Dictionary<string,object>从DataRow生成的.我目前有一些工作,但我做得太多而且没有使用.ToDictionary()扩展方法.
有人可以请教我如何成功完成这项工作吗?
这是我失败的尝试:
var dataDictionary = dataTable.Select(acn + "=" + accountNumber).ToDictionary(key => key.Table.Columns);
Run Code Online (Sandbox Code Playgroud)
这会返回一个KeyValuePair<DataColumnCollection, DataRow>,但同样,我需要一个Dictionary<string,object>
再次感谢您!
jjo*_*son 27
我知道这是旧的,但对于后来出现的那些正确的LINQ表达式是对driis代码的略微修改:
var dictionary = row.Table.Columns
.Cast<DataColumn>()
.ToDictionary(col => col.ColumnName, col => row.Field<string>(col.ColumnName));
Run Code Online (Sandbox Code Playgroud)
您需要指定所需的键,可能是acn表中的列:
.ToDictionary(row => (string)row["acn"]);
Run Code Online (Sandbox Code Playgroud)
如果要对返回的字典中的值运行转换,ToDictionary将使用第二个委托.
我会留下原来的答案,因为它解释了一般情况.你想要一排; 然后使用它的列作为键,列值作为,值,使用.这就是你如何做到的.
DataRow row = dataTable.Select(acn + "=" + accountNumber).Single(); // You might want SingleOrDefault
var dataDictionary = row.Table.Columns.ToDictionary(col => col.Name, col => row[col.Name]);
Run Code Online (Sandbox Code Playgroud)
免责声明,以上是在没有编译器的情况下编写的,可能需要稍微调整一下.
| 归档时间: |
|
| 查看次数: |
14784 次 |
| 最近记录: |