2011-10-17 21 views
2

を数える:は、LINQの私は2つのテーブル持っている悩み

tblBadge 
------- 
ID 
Name 

tblBadgeUsers 
------- 
BadgeID 
UserID 

ユーザーを多くのバッジを持つことができ、すべての関係は、SQLデータベースに適切に設定されています。

私はバッジの総数とともに、ユーザーが持っているすべてのバッジのリストを返そうとしています。これは私が得る限り私はかなり混乱しています。私はtblBadgeデータとそのバッジの合計を示す追加の列を返したいと思います。

これは動作しますが、私の試みではありません。

var q = db.tblBadgeUsers 
    .Where(c => c.UserID == UserID) 
    .GroupBy(c => c.BadgeID) 
    .Select(c => new { BadgeCount = c.Count(), Record = c.tblBadge }); 

答えて

3

バッジのみが本当にバッジIDとユーザーを持っていることを考えると、あなただけのバッジIDおよび取得する必要がありますように、それが聞こえます使用するためにそのバッジのカウント - ちょうどグループのキーを取得することを意味:

var q = db.tblBadgeUsers 
    .Where(c => c.UserID == UserID) 
    .GroupBy(c => c.BadgeID) 
    .Select(c => new { BadgeCount = c.Count(), BadgeId = c.Key }); 

各バッジの詳細情報がある場合、あなたは何をしたいかもしれません:

var q = db.tblBadgeUsers 
    .Where(c => c.UserID == UserID) 
    .GroupBy(c => c.BadgeID) 
    .Select(c => new { BadgeCount = c.Count(), BadgeId = c.Key, Badges = c }); 

次に、あなたが行うことができます:いつものように

foreach (var badgeType in q) 
{ 
    Console.WriteLine("{0}: {1}", badgeType.BadgeId, badgeType.BadgeCount); 
    foreach (var badge in q.Badges) 
    { 
     // Deal with the badge information 
    } 
} 
+0

スーパー感謝を! :D –

関連する問題