.NET 3.5でこのようなことをしたいと思います。最も速い方法は何ですか?
IEnumerable<DataRow> collection =
TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
共分散を導入する.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>();
DataRowCollection
でOfType<DataRow>()
を呼び出すことができます。
単純な直接的な解決策は、System.Data.DataTableオブジェクトのメソッド「Select()」を使用することです。これにより、「DataRow []」が生成されます。これから、以下のようにLinqを使用してIEnumberableとして扱うことができます。
List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();
各行に有用なオブジェクトのリストを提供します。
AsEnumerable()
メソッドを追加するSystem.Data.DataSetExtensions.dll
をプロジェクトに含める場合、組み込みの拡張メソッドがあります。
IEnumerable<DataRow> collection = TypedDataSet.TypedTableBase<DataRow>.AsEnumerable();