2012-02-15 11 views
1

LINQ to SQLクエリがあり、結果にアクセスするのに問題があります。 'group'句がないとうまくいきますが、グループ句では結果のフィールドが見つからないようです。私は、LINQの声明からして、グループを削除すると、私はのEmailAddressフィールドにアクセスすることができますグループ句を使用したLINQ to SQL結果へのアクセス

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

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); 

今私は経由して結果にアクセスしてみてください。

答えて

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; 
    } 
関連する問題