2
我喜欢.Where()
方法提供的语法,该方法可用于许多集合。但是,我注意到它在某些藏品中显然不存在。为什么DataTable.Rows没有.Where()方法?
我敢肯定,这与一些接口正在实施或不实施这样做,但除此之外,我想知道为什么我们没有在DataTable.Rows
我喜欢.Where()
方法提供的语法,该方法可用于许多集合。但是,我注意到它在某些藏品中显然不存在。为什么DataTable.Rows没有.Where()方法?
我敢肯定,这与一些接口正在实施或不实施这样做,但除此之外,我想知道为什么我们没有在DataTable.Rows
DataRowCollection
一个.Where()
方法只执行IEnumerable
,而不是IEnumerable<DataRow>
。
扩展方法存在 - DataTableExtensions.AsEnumerable
- 有效地“修复”这一点。您也可以拨打table.Cast<DataRow>()
,但AsEnumerable
返回的EnumerableRowCollection
有更多功能。
所以你可以这样写:
var query = from row in table.AsEnumerable()
where ...
select ...;
有在DataRowExtensions
其他有用的扩展方法,最值得注意的是Field
,所以你可以写:
var query = from row in table.AsEnumerable()
where row.Field<int>("Age") > 18
select row.Field<string>("Name");
@Downvoter:护理评论? – 2010-11-15 18:53:32
+1:谢谢,Jon。所以......我认为这个“AsEnumerable”方法必须付出一定的代价;否则该类将默认实现IEnumerable。你能告诉我这是什么成本吗? – 2010-11-15 20:52:22