【发布时间】:2015-11-11 16:16:28
【问题描述】:
正如文档DataTable.AsEnumerable()中所述
返回一个 IEnumerable
对象,其中泛型参数 T 是 DataRow。此对象可用于 LINQ 表达式或方法查询。
但AsEnumerable() 的返回类型不仅仅是IEnumerable<DataRow> 它也是EnumerableRowCollection<DataRow>
为什么会有这种类型?与仅提供 IEnumerable<DataRow> 的 DataTable.Rows.Cast<DataRow>() 相比,它提供了什么好处?
【问题讨论】:
-
我猜差异在框架之外不可见/不重要,因为一切都是
private或internal。 Here可以看到实现细节。 -
我不是数据集专家,因为我通常会尽量避免它,但快速浏览一下源似乎表明它对数据集的排序和过滤做了一些特殊的事情,而
IEnumerable<DataRow>会不是。 -
你正在使用来自
System.Data命名空间的AsEnumerable扩展方法,而不是来自System.Linq