.net EnumerablerRowCollection的目的是什么<;特罗>;上课?
如文件中所述 返回IEnumerable对象,其中泛型参数T为DataRow。此对象可用于LINQ表达式或方法查询 但是.net EnumerablerRowCollection的目的是什么<;特罗>;上课?,.net,linq,datatable,.net,Linq,Datatable,如文件中所述 返回IEnumerable对象,其中泛型参数T为DataRow。此对象可用于LINQ表达式或方法查询 但是AsEnumerable()的返回类型不仅仅是一个IEnumerable它还是一个EnumerablerRowCollection 为什么有这种类型?它提供了什么好处,比如说DataTable.Rows.Cast(),它只提供了一个IEnumerable?页面中的 有几种扩展方法专门从中获取并返回EnumerableRowCollection,我假设这些方法有DataTable
AsEnumerable()
的返回类型不仅仅是一个IEnumerable
它还是一个EnumerablerRowCollection
为什么有这种类型?它提供了什么好处,比如说DataTable.Rows.Cast()
,它只提供了一个IEnumerable
?页面中的
有几种扩展方法专门从中获取并返回EnumerableRowCollection
,我假设这些方法有DataTable
特定的实现,在简单使用IEnumerable
我还发现了这个
为了使LinqDataView在不使用IQueryable的情况下工作(出于性能原因,我们不想这样做),我们必须保留实现类。只要使用EnumerablerRowCollection实例而不是实现IEnumerable的“某物”,我们就可以将每个LINQ操作符捕获到一个状态包中,从而允许我们在DataView中重新创建LINQ查询的效果
我原以为LinqTo对象涵盖了LINQ与IEnumerables的任何用法,其他任何东西都意味着使用了IQueryables,但我猜情况并非如此
IQueryable
也实现了IEnumerable
,但是它有比DataRowCollection
更多的IQueryable特定扩展方法可供使用,我想在框架之外的差异是不可见的/重要的,因为所有东西都是私有的
或内部的
。您可以看到实现细节。我不是数据集专家,因为我通常会试图避免它,但快速浏览源代码似乎表明它在数据集的排序和筛选方面做了一些特殊的工作,而IEnumerable
则不会。您正在使用System.Data
命名空间中的扩展方法,不是来自System.Linq