2012-06-25 105 views
1

的子記錄數我有以下兩個表:排序使用LINQ

-Groups- 
Id 
Name 

-Members- 
Id 
GroupId (Group.Id is related to Member.GroupId) 
Name 
IsActive (bit) 

我如何寫一個LINQ查詢將由IsActive成員最高的一組中最低的數量進行排序?

查詢會是這個樣子

//pseudo code 
    from grp in database.Groups 
    orderby Count(grp.Members.where(m=>m.IsActive == true)) descending 
    select grp 

回答

3

您可以使用let clause這一點。 因此,您會得到如下:

from grp in database.Groups 
let activeCount = grp.Members.Where(m=>m.IsActive == true).Count() 
order by activeCount descending 
select grp 

另一種方式才達到所需的排序是使用select ... into。查詢將非常相似,但你應該知道這兩種方法之間的差異:Is linq's let keyword better than its into keyword?

+1

差不多就是對的:) – James