Доступ к результатам LINQ to SQL с помощью предложения группы - PullRequest
1 голос
/ 15 февраля 2012

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

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.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Может быть, что-то вроде этого:

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;
    }
0 голосов
/ 15 февраля 2012

результаты - 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;
     ...
   }
}
...