Кто-нибудь знает, как я могу установить значение по умолчанию для среднего? У меня есть такая строка ...Средний метод расширения в Linq для значения по умолчанию
dbPlugins = (from p in dbPlugins
select new { Plugin = p, AvgScore = p.DbVersions.Average(x => x.DbRatings.Average(y => y.Score)) })
.OrderByDescending(x => x.AvgScore)
.Select(x => x.Plugin).ToList();
, который вызывает ошибку, потому что у меня пока нет оценок. Если у меня нет ни одного, я хочу, чтобы среднее значение по умолчанию равнялось 0. Я думал, что это должен быть метод расширения, где я могу указать, что должно быть по умолчанию.
Я не думаю, что это хорошая идея. Предположим, что у вас есть «Список », а 'A' - это класс с свойством' int' 'Num'. Вам нужно написать код как 'listofA.DefaultItEmpty (defaultA) .Average (a => a.Num)'. Здесь вам нужно построить 'defaultA'. –
@DannyChen: Не верно: 'listofA.Select (a => a.Num) .DefaultIfEmpty (0) .Average()'. – Jon
@Jon: Но вы вернулись к началу, 'x.DbRatings' может быть здесь null. 'p.DbVersions.Select (x => x.DbRatings) .DefaultIfEmpty (defaultRatings)', вам нужно указать 'defaultRatings', это не просто число. –