我有一个在我的项目中使用过的 WCF。现在我也想在我的其他 Silverlight 项目中使用它。
WCF 设置为根据参数给出的查询返回数据表。它不返回单一类型的数据表,因此我不能仅将其映射到一种类型的对象,返回的数据表的列由作为参数传递的查询定义。
现在我想在我的 silverlight 代码中使用相同的 WCF,我知道我不能将数据表用于 silverlight 项目。因为我必须将此数据表转换为 ienuberable/List 的通用列表/LINQ 对象。
现在我正在使用下面的代码进行从数据表到 IEnumerable 的转换>
var columns = table.Columns.Cast<DataColumn>();
return table.AsEnumerable().Select(r => columns.Select(c =>
new { Column = c.ColumnName, Value = r[c] })
.ToDictionary(i => i.Column, i => i.Value != DBNull.Value ? i.Value : null));
我只是想听听你们的意见。这是进行对话的最佳方法吗?还请包括内存效率点,因为我的数据表有超过 200k 行。
感谢您抽出时间对此进行调查。