2012-02-15 2 views
1

У меня есть запрос LINQ to SQL, и у меня возникают проблемы с доступом к результатам. Без предложения 'group' он работает нормально, но с условием group результирующие поля, кажется, отсутствуют.Доступ к результатам LINQ to SQL с предложением группы

var q = (from p1 in db.Personnel 
join t2 in db.Table2 on p1.PKField equals t2.PKField 
where p1.Active != true 
group p1 by p1.PersonName into grouping 
select grouping); 

Теперь я пытаюсь получить доступ к результатам с помощью:

foreach (var results in q) 
{ 
    string xx = results.EmailAddress //this line fails with the group by in the linq. 
} 

Если удалить группу, из заявления Linq, то я могу получить доступ к полю EmailAddress.

ответ

0

Результаты IGrouping<out string, out Person>, а не Person.

Если вы уверены, что все лица, находящиеся в группе имеют один и тот же адрес электронной почты, вы можете использовать:

foreach (var results in q) 
{ 
    string xx = results.First().EmailAddress; 
} 

Если вы хотите получить доступ ко всем адресам электронной почты для члена группы:

foreach (var results in q) 
{ 
    foreach (var item in results) 
    { 
    string xx = item.EmailAddress; 
    ... 
    } 
} 
+0

Спасибо, ваш первый вариант, похоже, работает. –

0

Возможно, что-то вроде этого:

var q = (from p1 in db.Personnel 
      join t2 in db.Table2 on p1.PKField equals t2.PKField 
      where p1.Active != true 
      group p1 by p1.PersonName into grouping 
      select new 
      { 
       grouping.Key, 
       EmailAddress=grouping.Max (g =>g.EmailAddress) 
      } 
     ); 
    foreach (var results in q) 
    { 
     string xx = results.EmailAddress; 
    } 
Смежные вопросы