我有以下两张表:
-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
答案 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?