【发布时间】:2012-07-24 23:56:13
【问题描述】:
我有以下两张表
Groups
- Id
- Name
Members
- Id
- GroupId
- Name
我想显示一个群组列表及其成员数。我可以获取所有组,然后使用 foreach 语句来计算成员数。但这非常低效。
有没有办法编写一个在单个查询中返回成员计数的 LINQ 查询?
【问题讨论】:
标签: c# linq entity-framework
我有以下两张表
Groups
- Id
- Name
Members
- Id
- GroupId
- Name
我想显示一个群组列表及其成员数。我可以获取所有组,然后使用 foreach 语句来计算成员数。但这非常低效。
有没有办法编写一个在单个查询中返回成员计数的 LINQ 查询?
【问题讨论】:
标签: c# linq entity-framework
您可以使用简单的 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(),
};
【讨论】:
GroupId = g.Id, GroupName = g.Name, etc
如果存在外键关系,这不可行吗?
var q = context.Groups.Select(x => new { Group = x.Name, Count = x.Members.Count() } );
【讨论】: