我有一个LINQ to SQL查询,但我无法访问结果。 没有'组'它运行正常,但是使用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字段。
答案 0 :(得分: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;
...
}
}
答案 1 :(得分: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;
}