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 回答