我有一组表行(类型DataRowCollection
)。我这样写是完全有效的:
foreach(var row in myDataRowCollection)
{
// Something with row
}
然而,以下内容将无法编译:
myDataRowCollection.ToList();
甚至
myDataRowCollection.Select(...
这些 System.Linq 扩展期望什么DataRowCollection
不能实现?
我有一组表行(类型DataRowCollection
)。我这样写是完全有效的:
foreach(var row in myDataRowCollection)
{
// Something with row
}
然而,以下内容将无法编译:
myDataRowCollection.ToList();
甚至
myDataRowCollection.Select(...
这些 System.Linq 扩展期望什么DataRowCollection
不能实现?
foreach()
是基于模式的(文档),它实际上并不依赖于IEnumerable
. GetEnumerator()
足够。
class A // note: no interface
{
public IEnumerator GetEnumerator() { ...}
}
另一方面,Linq 基于IEnumerable<T>
.
你的DataRowCollection
工具IEnumerable
,但不是IEnumerable<DataRow>
。对于 Linq 来说太旧了。
但是有一些辅助方法可用,myDataRowCollection.AsEnumerable().Select(...)
应该可以。