1

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 ステートメントから group by を削除すると、EmailAddress フィールドにアクセスできます。

4

2 に答える 2

0

results は であり、では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 に答える