私は次の2つのテーブルを持っています
Groups
- Id
- Name
Members
- Id
- GroupId
- Name
グループのリストとそのメンバー数を表示したい。すべてのグループを取得してから、foreachステートメントを使用してメンバーの数を数えることができます。しかし、これは非常に非効率的です。
単一のクエリでメンバー数を返すLINQクエリを作成する方法はありますか?
私は次の2つのテーブルを持っています
Groups
- Id
- Name
Members
- Id
- GroupId
- Name
グループのリストとそのメンバー数を表示したい。すべてのグループを取得してから、foreachステートメントを使用してメンバーの数を数えることができます。しかし、これは非常に非効率的です。
単一のクエリでメンバー数を返すLINQクエリを作成する方法はありますか?
単純な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(),
};
外部キーの関係がある場合、これは機能しませんか?
var q = context.Groups.Select(x => new { Group = x.Name, Count = x.Members.Count() } );