2012-07-24 100 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() });