【发布时间】:2020-12-11 11:33:51
【问题描述】:
目前我们通过遍历列表和字典的每个值来做到这一点:
private DataTable ChangeToDictionary(List<Dictionary<string,int>> list)
{
DataTable datatTableReturn = new DataTable();
if (list.Count() > 0)
{
Dictionary<string, int> haeders = list.ElementAt(0);
foreach (var colHead in haeders)
{
datatTableReturn.Columns.Add(colHead.Key);
}
}
foreach (var row in list)
{
DataRow dataRow = datatTableReturn.NewRow();
foreach (var col in row)
{
dataRow[col.Key] = col.Value;
}
datatTableReturn.Rows.Add(dataRow);
}
return datatTableReturn;
}
但是有更好的方法吗?循环了这么多次感觉不太好
【问题讨论】:
-
像什么?任何其他方法最终都需要检查您的所有数据 c.q.循环遍历记录。我没有看到你遇到的真正问题。你不喜欢上面的代码?
-
这行得通,但如前所述,有没有更好、更强大的方法
-
为什么首先要转换成DataTable?
-
@Jodrell,因为 DataTable can 在 Seilverlight 中不存在,有时从服务返回时无法序列化
-
你想达到什么目的?速度更快?代码的可重用性?代码优雅?对于初学者,不要在
List<T>上使用Count()扩展方法。请改用Count属性。