C#Datatable转换为IList

Alg*_*lgi 0 c#

我使用以下代码转换DatasetIList.有没有更好的方法来编写下面的代码:

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

h.a*_*lex 6

using System.Linq;


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

只需在集合中使用System.Link的Select()方法即可.这是一个扩展方法,可以在任何方法上调用(也可以在任何直接或通过继承实现该接口的对象上).RowstableIEnumerable<T>

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

如果要展平可枚举,可以使用SelectMany().

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