1

我有一组表行(类型DataRowCollection)。我这样写是完全有效的:

foreach(var row in myDataRowCollection)
{
  // Something with row
}

然而,以下内容将无法编译:

myDataRowCollection.ToList();

甚至

myDataRowCollection.Select(...

这些 System.Linq 扩展期望什么DataRowCollection不能实现?

4

1 回答 1

5

foreach()是基于模式的(文档),它实际上并不依赖于IEnumerable. GetEnumerator()足够。

class A // note: no interface
{
    public IEnumerator GetEnumerator() { ...} 
}

另一方面,Linq 基于IEnumerable<T>.

你的DataRowCollection工具IEnumerable,但不是IEnumerable<DataRow>。对于 Linq 来说太旧了。

但是有一些辅助方法可用,myDataRowCollection.AsEnumerable().Select(...)应该可以。

于 2019-09-27T13:22:06.317 回答