2013-12-20 3 views
3

Я использую Linq к группе некоторых столбцов в моей DataTableКак группировать по нескольким столбцам из datatable с linq?

List<DataTable> tables = ds 
    .Tables[0] 
    .AsEnumerable() 
    .GroupBy(row => row.Field<string>("EMAIL"), row.Field<string>("NAME")) 
    .Select(g => g.CopyToDataTable()) 
    .ToList(); 

Я получаю сообщение об ошибке сборки «Название„строка“не существует в текущем контексте»? Как обрабатывать несколько групп?

ответ

7

Использовать анонимный объект для этого:

List<DataTable> tables = ds.Tables[0].AsEnumerable() 
          .GroupBy(row => new { 
           Email = row.Field<string>("EMAIL"), 
           Name = row.Field<string>("NAME") 
          }).Select(g => g.CopyToDataTable()).ToList(); 
+0

ошибка вызвана becuse лямбда-выражение возвращает одно выражение ('row.Field («E-MAIL»)') и компилятор interperting выражение под запятая как другой параметр для метода GroupBy. Так как это вне контекста выражения, где нет переменной 'row', компилятор дает эту ошибку. Этот ответ решает проблему, если выражение лямбда возвращает одно выражение - один анонимный объект. –

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