如何启用包括空成员在内的平均排序
How to enable average sorting including empty members
我需要按成员的平均值排序,然后得到不能用平均函数计算的对象(空集合)。我试着写这样的东西:
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(或者我们知道的其他一些特殊值低于实际选票可以给你的)。
我需要按成员的平均值排序,然后得到不能用平均函数计算的对象(空集合)。我试着写这样的东西:
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(或者我们知道的其他一些特殊值低于实际选票可以给你的)。