如何启用包括空成员在内的平均排序
本文关键字:排序 成员 包括空 何启用 启用 | 更新日期: 2023-09-27 18:33:33
我需要按成员的平均值排序,然后获取无法通过平均函数计算的对象(空集合)。我试着写这样的东西:
var userPhotos =
Database.Set<Photo>().Where(p => string.IsNullOrEmpty(userId) || p.ClientProfileId == userId).ToList();
IOrderedEnumerable<Photo> sortedPhotos;
switch (orderBy)
{
case OrderBy.Raiting:
sortedPhotos = userPhotos.Where(p => p.Votes != null && p.Votes.Any()).OrderByDescending(item => item.Votes.Average())
.ThenByDescending(p => p.TimeOfCreation);
break;
default:
sortedPhotos = userPhotos.OrderByDescending(item => item.TimeOfCreation);
break;
}
return sortedPhotos.Skip((page - 1)*pageSize).Take(pageSize);
我需要包含具有> 0 votes
的对象,但它无法正常工作。我的错误在哪里?感谢您将来的回答!
这样
的事情会起作用:
sortedPhotos =
userPhotos
.OrderByDescending(item =>
(item.Votes == null || !item.Votes.Any())
? -1
: item.Votes.Average());
这个想法是,对于没有任何投票的照片,我们给他们的平均投票为-1(或者我们知道的其他一些特殊价值低于真实投票可以给你的价值)。