Преобразование DataRowCollection в IEnumerable <T>
Я хотел бы сделать что-то подобное в .NET 3.5. Какой самый быстрый способ?
IEnumerable<DataRow> collection =
TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
Ответ 1
Предполагая, что вы используете .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.
Вы можете вызвать OfType<DataRow>() на DataRowCollection.
Ответ 3
Простым прямым решением является использование метода "Select()" объекта System.Data.DataTable, который создает "DataRow []". Из этого вы можете рассматривать как IEnumberable, используя Linq, как показано ниже:
List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();
Предоставление полезного списка объектов для каждой строки.
Ответ 4
Существует встроенный метод расширения, если вы добавляете System.Data.DataSetExtensions.dll в свой проект, который добавляет метод AsEnumerable().