如何启用包括空成员在内的平均排序

本文关键字:排序 成员 包括空 何启用 启用 | 更新日期: 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(或者我们知道的其他一些特殊价值低于真实投票可以给你的价值)。