2

.Where()多くのコレクションで使用できるメソッドによって提供される構文が気に入っています。ただし、一部のコレクションでは著しく欠落していることに気付きました。

これは、実装されているか実装されていないインターフェイスに関係していると確信していますが、それ以上に、.Where()DataTable.Rows にメソッドがない理由を知りたいです。

4

1 に答える 1

8

DataRowCollectionを実装するだけで、は実装IEnumerableしませんIEnumerable<DataRow>

DataTableExtensions.AsEnumerableこれを効果的に「修正」するための拡張メソッドが存在します。呼び出すこともできますtable.Cast<DataRow>()が、EnumerableRowCollectionによって返されるAsEnumerableにはもう少し機能があります。

だからあなたは書くことができます:

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");
于 2010-11-15T18:00:20.667 に答える