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