1

我有一个 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 语句中删除 group by,那么我可以访问 EmailAddress 字段。

4

2 回答 2

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;
     ...
   }
}
于 2012-02-15T09:40:31.707 回答
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;
    }
于 2012-02-15T09:45:20.390 回答