2013-10-02 3 views
0

У меня есть DataTable объект (OutputDT1), я хочу использовать LINQ для группы по столбцу ConfirmedBy, а затем преобразовать его обратно в DataTable объект, который имеет только две колонки ConfirmBy и Count.Как преобразовать этот результат запроса LINQ обратно в объект DataTable?

var result = from row in OutputDT1.AsEnumerable() 
      group row by new 
      { 
       ConfirmedBy = row.Field<string>("ConfirmedBy") 
      } 
      into grp 
      select new 
      { 
       ConfirmedBy = grp.Key.ConfirmedBy, 
       Count = grp.Count(), 
      }; 
+0

http://social.msdn.microsoft.com/Форумы/vstudio/en-US/6ffcb247-77fb-40b4-bcba-08ba377ab9db/converting-a-list-to-datatable – Muctadir

+0

Так в чем же проблема ??? – Alireza

+0

Я думаю, вам нужно будет создать собственный метод расширения для этого. –

ответ

1

Простой способ будет:

DataTable dt = new DataTable(); 
foreach(var item in result) 
{ 
    dt.Rows.Add(item.ConfirmedBy, item.count); 
} 
+0

Я вижу, есть ли встроенная функция .NET, которая может выполнять работу, о которой я не знал? –

+0

Существует один экземпляр CopyToDataTable, но с тех пор это не сработает, вы выбираете анонимный объект. Вы не можете использовать это для своей ситуации. Я не уверен, есть ли какой-либо встроенный метод .Net framework для чего-то подобного. – Habib

1

Используя решение от How to: Implement CopyToDataTable<T> Where the Generic Type T Is Not a DataRow

мы можем написать:

var result = (from row in OutputDT1.AsEnumerable() 
       group row by row.Field<string>("ConfirmedBy") into grp 
       select new 
       { 
        ConfirmedBy = grp.Key, 
        Count = grp.Count(), 
       }).CopyToDataTable(); 
+0

У меня ошибка в CopyToDataTable –

+0

@ J-CSharper Какая ошибка? И включили ли вы реализацию из данной ссылки в свой проект? – Servy

+1

Я вижу, если мне нужно использовать эту реализацию, я скорее использую метод, предоставляемый Habib. Это проще –

Смежные вопросы