使用LINQ按子记录数排序

时间:2012-06-25 07:18:13

标签: c# linq entity-framework-4 linq-to-entities

我有以下两张表:

-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

1 个答案:

答案 0 :(得分: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?