Преобразовать набор данных в IQueryable <T>или IEnumerable <T> - PullRequest
11 голосов
/ 03 февраля 2009

Поскольку Linq для DB2 еще не существует (давай, IBM!), И я хочу иметь дело с IQueryables или IEnumerables в своем коде, как мне преобразовать DataTable в IQueryable? Или IEnumerable?

У меня есть интерфейс и класс, который соответствует столбцам в таблице данных ...

IQueryable<IMyData> GetAS400Data(..parameters..)
{
    DataSet d = GetData();
    ...
    //Some code to convert d to IQueryable<IMyData>
}

DataTable.Rows не поддерживает .AsQueryable, так как MSFT дернул его, поэтому я не уверен, что здесь делать.

Ответы [ 3 ]

18 голосов
/ 03 февраля 2009
table.AsEnumerable()...

table.AsEnumerable().AsQueryable()...

Однако вам нужно написать собственный перевод (Select) для вашего типа; и IQueryable<T> все еще будет использовать LINQ-to-Objects; единственная цель (в этом сценарии) использования IQueryable<T> сверх IEnumerable<T> состоит в том, чтобы использовать выражения по какой-то другой причине - возможно, для динамической библиотеки LINQ .

1 голос
/ 30 августа 2012

вы можете использовать что-то вроде этого.

DataSet ds = GetData();
DataTable dt= ds.Tables[0];
var query =
    from row in dt.AsEnumerable() 
    select new IMyData()
    {
        property1= row[0],
        property2= row[1]
    };
1 голос
/ 03 февраля 2009

Взгляните сюда похоже, что поставщик с сущностной структурой для DB2 существует.

...