Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Linq-запрос to DataTable, Как сохранить результаты выполнения Linq 
:(
    Опции темы
VSyntoT
Дата 22.5.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.9.2007

Репутация: нет
Всего: нет



В общем имеется следующий запрос:
var q1 =
from c in db.Customers
where c.CustomerID == "A%"
select new
{
c.CustomerID,
c.CompanyName
};
Хочется сохранить q1 в DataTable, но не знаю как... уже много че перепрообовал, но чет туплю...
Буду очень благодарен за помошь... 
PM MAIL   Вверх
PashaPash
Дата 22.5.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 4
Всего: 49



VSyntoT, полключи System.Data.DataSetExtensions, сделай using System.Data и вызови q1.CopyToDataTable(...).


--------------------
PM MAIL WWW   Вверх
VSyntoT
Дата 23.5.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.9.2007

Репутация: нет
Всего: нет



Цитата(PashaPash @  22.5.2008,  19:26 Найти цитируемый пост)
сделай using System.Data и вызови q1.CopyToDataTable(...). 


не совсем понятно...
можно кодом?

PM MAIL   Вверх
Idsa
Дата 9.6.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 5
Всего: 62



Цитата(PashaPash @  22.5.2008,  19:26 Найти цитируемый пост)
VSyntoT, полключи System.Data.DataSetExtensions, сделай using System.Data и вызови q1.CopyToDataTable(...). 

Судя по определению Extension-метода CopyToDataTable:
Код

public static DataTable CopyToDataTable<T>(
    this IEnumerable<T> source
) where T : DataRow

, такой подход сработает только для набора элементов типа DataRow.

Цитата(VSyntoT @  22.5.2008,  17:31 Найти цитируемый пост)
Хочется сохранить q1 в DataTable, но не знаю как

Не знаю, как красиво это сделать. Если бы у DataTable.Rows был метод AddRange, можно было бы что-нибудь придумать, а так, пожалуй, проще пройтись foreach и вручную добавить строки.

Это сообщение отредактировал(а) Idsa - 9.6.2008, 22:23


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
PashaPash
Дата 10.6.2008, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 4
Всего: 49



Цитата(Idsa @  9.6.2008,  22:21 Найти цитируемый пост)
Судя по определению Extension-метода CopyToDataTable...

Если работа началась с запроса к DataTable, то вполне можно аккуратно получить в результате набор DataRow.


--------------------
PM MAIL WWW   Вверх
Idsa
Дата 10.6.2008, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 5
Всего: 62



Цитата(PashaPash @  10.6.2008,  09:13 Найти цитируемый пост)
Если работа началась с запроса к DataTable, то вполне можно аккуратно получить в результате набор DataRow. 

Но ведь мы решаем конкретную проблему:
Цитата(VSyntoT @  22.5.2008,  17:31 Найти цитируемый пост)

var q1 =
from c in db.Customers
where c.CustomerID == "A%"
select new
{
c.CustomerID,
c.CompanyName
};

Думаю, самый простой вариант - добавить после выборки примерно следующий код:
Код

      DataTable table = new DataTable();
      table.Columns.Add("CustomerId");
      table.Columns.Add("CompanyName");

      foreach (var item in q1)
      {
        DataRow row = table.NewRow();
        row[0] = item.CustomerID;
        row[1] = item.CompanyName;
        table.Rows.Add(row);
      }



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.0654 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.