当前位置:  开发笔记 > 小程序 > 正文

如何将DataTable转换为IEnumerable <Dictionary <string,object >>?

如何解决《如何将DataTable转换为IEnumerable<Dictionary<string,object>>?》经验,为你挑选了2个好方法。

我想将DataTable转换IEnumerable<>Dictionary.我尝试了以下LINQ查询,

from DataRow row in ds.Tables[0].AsEnumerable()
let rowDictionary = new Dictionary()
from DataColumn column in row.Table.Columns.Cast()
select rowDictionary.Add(column.ColumnName, row[column]).ToArray();

但是我收到以下错误:

error CS1943: An expression of type 
'System.Collections.Generic.IEnumerable' is not 
allowed in a subsequent from clause in a query expression with source type 
'System.Data.EnumerableRowCollection'.  Type inference 
failed in the call to 'SelectMany'.

我知道我可以通过循环来强制执行此操作,但这似乎是我应该能够在LINQ中执行的操作.在此先感谢您的帮助!



1> Elisha..:

我假设您想要的是每个行映射列的值为Dictionary:

var dt = new DataTable();

var columns = dt.Columns.Cast();
dt.AsEnumerable().Select(dataRow => columns.Select(column => 
                     new { Column = column.ColumnName, Value = dataRow[column] })
                 .ToDictionary(data => data.Column, data => data.Value));



2> n8CodeGuru..:

这是我用Linq格式做的一种方式

       var registerdataVerify = (from o in dt.AsEnumerable()
                                  select new
                                  {                                         
                                      DataDef =o["shortName"].ToString(),
                                      Value = Convert.ToInt32(o["valueDec"])
                                  }).ToDictionary(n => n.DataDef, n => n.Value);

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有