2010-11-15 107 views

回答

8

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"); 
+0

@Downvoter:護理評論? – 2010-11-15 18:53:32

+0

+1:謝謝,Jon。所以......我認爲這個「AsEnumerable」方法必須付出一定的代價;否則該類將默認實現IEnumerable。你能告訴我這是什麼成本嗎? – 2010-11-15 20:52:22

相關問題