使用LINQ通过单个查询获取外键表

时间:2012-07-24 15:39:57

标签: c# linq entity-framework

我有以下两个表

Groups
- Id
- Name

Members
- Id
- GroupId
- Name

我想显示一个包含其成员数的组列表。我可以获得所有组,然后使用foreach语句来计算成员数。但这效率非常低。

有没有办法编写LINQ查询,该查询将在单个查询中返回成员计数?

2 个答案:

答案 0 :(得分: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(),
            };

答案 1 :(得分:2)

如果存在外键关系,这不会起作用吗?

var q = context.Groups.Select(x => new { Group = x.Name, Count = x.Members.Count() } );