C#Datatable转换为IList

时间:2015-06-26 12:19:37

标签: c#

我使用以下代码将Dataset转换为IList。 有没有更好的方法来编写下面的代码:

IList lst = new List<object>();
var tbl = dsList.Tables[0];
foreach (DataRow dr in tbl.Rows)
{
   lst.Add(dr.ItemArray);
}

2 个答案:

答案 0 :(得分:6)

using System.Linq;


    IList<object> lst = dsList.Tables[0].Rows.OfType<DataRow>().Select(x => x.ItemArray).ToList();

只需在Rows的{​​{1}}集合上使用System.Link的Select()方法即可。这是一个可以在任何table上调用的扩展方法(也意味着在任何直接或通过继承实现该接口的对象上)。

如果您没有IEnumerable<T>来查询,而不是简单的IEnumerable<T>(非通用),您可以使用调用.OfType()的技巧,返回通用实例

如果要展开可枚举的内容,可以使用SelectMany()

如果你坚持使用pre-linq .NET,你必须有一个循环。

答案 1 :(得分:0)

据我所知,没有办法改进你的代码。您当前使用的方法已经是最好的解决方案。