web-dev-qa-db-ja.com

DataRowCollectionをIEnumerable <T>に変換します

.NET 3.5でこのようなことをしたいと思います。最も速い方法は何ですか?

IEnumerable<DataRow> collection = 
    TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
60
Abdu

共分散を導入する.NET 4.0を使用していると仮定します。

// Presumably your table is of some type deriving from TypedTableBase<T>,
// where T is an auto-generated type deriving from DataRow.
IEnumerable<DataRow> collection = myTypedTable;

テーブルタイプ自体IEnumerable<T> where T : DataRowを実装します。

さもないと:

IEnumerable<DataRow> collection = myTypedTable.Cast<DataRow>();
66
Dan Tao

DataRowCollectionOfType<DataRow>()を呼び出すことができます。

83
wsanville

単純な直接的な解決策は、System.Data.DataTableオブジェクトのメソッド「Select()」を使用することです。これにより、「DataRow []」が生成されます。これから、以下のようにLinqを使用してIEnumberableとして扱うことができます。

List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();

各行に有用なオブジェクトのリストを提供します。

3

AsEnumerable()メソッドを追加するSystem.Data.DataSetExtensions.dllをプロジェクトに含める場合、組み込みの拡張メソッドがあります。

IEnumerable<DataRow> collection = TypedDataSet.TypedTableBase<DataRow>.AsEnumerable();
0