2012-07-24 60 views
2

单个查询我有以下两个表格获取外键表使用LINQ

Groups 
- Id 
- Name 

Members 
- Id 
- GroupId 
- Name 

我想与他们的会员数显示组的列表。我可以获得所有组,然后使用foreach语句来计算成员数量。但这是非常低效的。

有没有办法写一个LINQ查询来返回单个查询中的成员数?

回答

5

你可以用简单的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(), 
      }; 
+0

还没有测试过,但是这有效吗? Group = g – James 2012-07-24 16:51:04

+0

@James - 是的,或者你可以选择你想要的属性:'GroupId = g.Id,GroupName = g.Name,etc' – Aducci 2012-07-24 17:18:27

2

如果有外键关系,是不是会工作?

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