Заполнение DataSet или DataTable из набора результатов запроса LINQ

128
задан Ijas Ameenudeen 20 January 2019 в 13:50
поделиться

5 ответов

Как упомянуто в вопросе, IEnumerable имеет CopyToDataTable метод:

IEnumerable<DataRow> query =
    from order in orders.AsEnumerable()
    where order.Field<DateTime>("OrderDate") > new DateTime(2001, 8, 1)
    select order;

// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();

, Почему это не будет работать на Вас?

84
ответ дан mattytommo 20 January 2019 в 13:50
поделиться

Создайте объект класса и возвратитесь list(T) из запроса.

11
ответ дан Paul Fleming 20 January 2019 в 13:50
поделиться

Сделайте ряд Объектов Передачи данных, нескольких картопостроителей и возврата это через .asmx.
Вы должны никогда , выставляют объекты базы данных непосредственно, поскольку изменение в схеме процедуры распространит потребителю веб-сервиса без Вас замечающий его.

22
ответ дан Lars Mæhlum 20 January 2019 в 13:50
поделиться

При использовании типа возврата IEnumerable можно возвратить Ваш запрос переменная непосредственно.

15
ответ дан Kilhoffer 20 January 2019 в 13:50
поделиться

Для выполнения этого запроса против DataContext класс необходимо будет сделать следующее:

MyDataContext db = new MyDataContext();
IEnumerable<DataRow> query = 
    (from order in db.Orders.AsEnumerable()
        select new
        {
            order.Property,
            order.Property2
        })
    as IEnumerable<DataRow>;
return query.CopyToDataTable<DataRow>();

Без as IEnumerable<DataRow>; Вы будете видеть следующую ошибку компиляции:

не Может неявно преобразовать тип 'Система. Наборы. Универсальный. IEnumerable' к 'Системе. Наборы. Универсальный. IEnumerable'. Явное преобразование существует (Вы скучаете по броску?)

26
ответ дан C1pher 20 January 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: