我有一個DBSet<User>
的用戶。每個用戶都有一個DBSet<Activity>
的活動。每個活動本身有一個或沒有名稱的類別。LINQ選擇和排序關係不同
public class User
{
[...]
DBSet<Activity> activity {get;set;}
}
public class Activity
{
[...]
Category category{get;set;}
}
public class Category
{
[...]
string Name {get;set;}
}
現在我想擁有一個所有用戶的列表按活動中給定類別名稱的出現次數排序。換句話說:我想要一個用戶列表,按他的活動數量排序。我怎麼能用LINQ(lambda表達式)做到這一點?
DBSet<User> users;
string cat="myCategory";
var usersByCategoryActivity = users.OrderByDescending(???);
謝謝。我還需要在Count之前添加'where(a => a.Category!= null)',因爲類別也可以爲null。但是,這是解決方案 – daniel 2013-04-30 14:16:44
@zoidbergi只需將Where謂詞添加到已經有如此謂詞的Count中即可。 .OrderBy(e => e.activity.Count(a => a.Category!= null && a.Categories.Name.Contains(cat))); – 2013-04-30 14:18:19
這比嵌套的.Where快嗎? – daniel 2013-04-30 14:19:01