2

私は次の2つのテーブルを持っています

Groups
- Id
- Name

Members
- Id
- GroupId
- Name

グループのリストとそのメンバー数を表示したい。すべてのグループを取得してから、foreachステートメントを使用してメンバーの数を数えることができます。しかし、これは非常に非効率的です。

単一のクエリでメンバー数を返すLINQクエリを作成する方法はありますか?

4

2 に答える 2

6

単純なlinq-to-entitiesクエリでそれを行うことができます。匿名タイプに投影することも、情報を格納するための独自のクラスを作成することもできます。

var query = from g in context.Groups
            join m in context.Members on g.Id equals m.GroupId into members
            select new 
            {
              Group = g,
              MemberCount = members.Count(),
            };
于 2012-07-24T15:47:56.563 に答える
2

外部キーの関係がある場合、これは機能しませんか?

var q = context.Groups.Select(x => new { Group = x.Name, Count = x.Members.Count() } );
于 2012-07-24T15:56:13.903 に答える