Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 LINQ load query to datatable  [new]
Agapov_stas
Member

Откуда:
Сообщений: 402
Доброго времени суток!
Не могу найти каким образом запросом linq к entities "загрузить" данные в DataTable.

Есть:
using(DBContext db = new DBContext())
                {
                        var query = from p in db.tblPeriods
                                 select new
                                 {
                                     id = u.id,
                                     Period = p.Period
                                 };
                }

В комбо вывожу так:
cbPeriod.DataSource = query.ToList();

А как данные в DataTable загрузить?

Спасибо.
18 май 16, 14:45    [19188957]     Ответить | Цитировать Сообщить модератору
 Re: LINQ load query to datatable  [new]
Axeleron
Member

Откуда: London
Сообщений: 7531
Agapov_stas
А как данные в DataTable загрузить?

А зачем?
18 май 16, 16:23    [19189638]     Ответить | Цитировать Сообщить модератору
 Re: LINQ load query to datatable  [new]
Agapov_stas
Member

Откуда:
Сообщений: 402
Axeleron, знал, что задаст кто-нибудь этот вопрос.
Есть два комбика, один - цеха, второй - агрегаты.
Если каждый раз "подгружать" список агрегатов из БД, - слишком затратно, ИМХО.
Поэтому, посчитал, что лучше будет разок загрузить данные агрегатов в DataTable и "отсеивать" по месту, а не каждый раз посылать запрос на выборку к БД.

И все таки, по сабжу, как такое сделать?
Спасибо.
19 май 16, 08:48    [19191743]     Ответить | Цитировать Сообщить модератору
 Re: LINQ load query to datatable  [new]
Agapov_stas
Member

Откуда:
Сообщений: 402
Пока нашел такой вариант:
foreach (var element in query){
             var row = dtPeriods.NewRow();
             row["id"] = element.id;
             row["Period"] = element.Period;
             dtPeriods.Rows.Add(row);
             }
19 май 16, 09:20    [19191852]     Ответить | Цитировать Сообщить модератору
 Re: LINQ load query to datatable  [new]
Monochromatique
Member [заблокирован]

Откуда:
Сообщений: 1936
Agapov_stas
Axeleron, знал, что задаст кто-нибудь этот вопрос.
Есть два комбика, один - цеха, второй - агрегаты.
Если каждый раз "подгружать" список агрегатов из БД, - слишком затратно, ИМХО.
Поэтому, посчитал, что лучше будет разок загрузить данные агрегатов в DataTable и "отсеивать" по месту, а не каждый раз посылать запрос на выборку к БД.

И все таки, по сабжу, как такое сделать?
Спасибо.


"каждый раз" - что за каждый раз?

.ToList() = "материализует" отложенный LINQ-запрос, отвечая требованию "разок загрузить данные агрегатов", и зачем вам нужен именно DataTable - неясно.

знал, что задаст кто-нибудь этот вопрос.
Это первый вопрос, который возникает. Если используете L2E, то и оставайтесь в её рамках.
19 май 16, 10:53    [19192408]     Ответить | Цитировать Сообщить модератору
 Re: LINQ load query to datatable  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Agapov_stas, их есть два, как минимум... из серии тупо в лоб... 1. получить информацию о коннекции + сгенеренном sql запросе и, на основании этого заполнить датасет. 2. написать екстеншен, на подобии этого(просто как пример)
19 май 16, 11:05    [19192500]     Ответить | Цитировать Сообщить модератору
 Re: LINQ load query to datatable  [new]
Agapov_stas
Member

Откуда:
Сообщений: 402
Monochromatique
"каждый раз" - что за каждый раз?

Каждый раз, когда выбираешь наименование цеха, подгружается список агрегатов, относящихся к выбранному цеху. Думаю, это и так ясно должно быть.

Намек ясен.
19 май 16, 11:06    [19192504]     Ответить | Цитировать Сообщить модератору
 Re: LINQ load query to datatable  [new]
Agapov_stas
Member

Откуда:
Сообщений: 402
buser, спасибо. Думаю, остановлюсь на совете "Если используете L2E, то и оставайтесь в её рамках".
19 май 16, 11:20    [19192591]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить