返回IEnumerable< T>对象,其中泛型参数T是DataRow。该对象可用于LINQ表达式或方法查询。
但AsEnumerable()
的返回类型不仅仅是IEnumerable<DataRow>
,还是EnumerableRowCollection<DataRow>
为什么有这种类型?与DataTable.Rows.Cast<DataRow>()
仅提供IEnumerable<DataRow>
?
答案 0 :(得分:0)
从那里的EnumerableRowCollection<TRow>
页面
有几种扩展方法专门从中获取并返回EnumerableRowCollection<TRow>
我假设这些方法有DataTable
个特定实现,仅在使用IEnumerable<DataRow>
我还发现了blog post状态
为了让LinqDataView在不使用IQueryable的情况下工作(出于性能原因我们不想这样做),我们必须坚持实现类。只要使用EnumerableRowCollection实例而不是实现IEnumerable的“something”,我们就可以将每个LINQ运算符捕获到一个状态包中,这允许我们在DataView中重新创建LINQ查询的效果。
我曾经认为LINQ-To-Objects涵盖了LINQ与IEnumerables的任何使用,其他任何意味着使用了IQueryables,但我想情况并非如此。 IQueryable<T>
也实现了IEnumerable<T>
,但它有许多比IQ DataRowCollection<TRow>