Преобразование набора данных в IQueryable <T> или IEnumerable <T>
Так как Linq для DB2 еще нет (c'mon IBM!), и я хочу иметь дело с IQueryables или IEnumerables в своем коде, как бы преобразовать DataTable в IQueryable? Или IEnumerable?
У меня есть интерфейс и класс, который соответствует столбцам в datatable...
IQueryable<IMyData> GetAS400Data(..parameters..)
{
DataSet d = GetData();
...
//Some code to convert d to IQueryable<IMyData>
}
DataTable.Rows не поддерживает .AsQueryable, так как MSFT дернул его, поэтому я не уверен, что делать здесь.
Ответы
Ответ 1
table.AsEnumerable()...
table.AsEnumerable().AsQueryable()...
Однако вам нужно написать свой собственный перевод (Select
) в ваш тип; и IQueryable<T>
все равно будет использовать LINQ-to-Objects; единственной целью (в этом случае) использования IQueryable<T>
over IEnumerable<T>
было бы использование выражений по какой-то другой причине - возможно, для динамической библиотеки LINQ .
Ответ 2
Посмотрите здесь, кажется, что поставщик с инфраструктурой сущностей для DB2 существует.
Ответ 3
вы можете использовать что-то вроде этого.
DataSet ds = GetData();
DataTable dt= ds.Tables[0];
var query =
from row in dt.AsEnumerable()
select new IMyData()
{
property1= row[0],
property2= row[1]
};