2016-09-08 6 views
0

Может ли кто-нибудь кратко объяснить, почему я не могу использовать метод CopyToDataTable на следующем объекте linq (IEnumurable)?Объект LINQ типа IEnumerable не возвращает DataTable

var query = from r in SourceData.AsEnumerable() 
     group r by r["fruitid"] into Dt 
     select new 
     { 
     Group = Dt.Key, 
     Sum = Dt.Sum((t)=> double.Parse(t["name"].ToString())) 
     }; 

Напоминание: Моя цель состоит извлечения полученного DataTable после GroupBy Clause

+1

Как вы не можете использовать 'CopyToDataTable'? Разве это не появляется в Intellisense? Разве это не скомпилировано, если вы все равно попытаетесь? Исключено ли исключение? – krillgar

+0

, пожалуйста, сообщите нам об ошибке. иначе мы не сможем помочь вам – Radinator

+0

Является ли 'SourceData' вашей' DataTable'? – SilentCoder

ответ

1

Существует ограничение на общий тип CopyToDataTable.

Посмотрите на объявлении метода:

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

} 

Если вы заметили, что вторая линия, ваш IEnumerable<T> должен быть перечислимой из DataRow с. То, что у вас есть, является перечислимым для анонимных объектов.

В зависимости от того, из какого источника DataTable, связанного с ним и т. Д., Есть много других способов сделать то, что вы пытаетесь сделать, но именно поэтому у вас нет этого метода.

+0

. ваш ответ на полезную обратную связь от [Tim Schmelter] (http://stackoverflow.com/questions/9258704/how-to-group-by-the-datatable-and-put-the-result-in-another-datatable) некоторое время назад. –

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