Агрегатная последовательность LINQ не содержит элементов - PullRequest
6 голосов
/ 28 мая 2011

Я динамически создаю запрос, начинающийся с этого:

var items = db.Items;

...

case "4":
items = items.OrderBy(x => x.Ratings.Average(t => t.score)).ThenBy(x => x.title);

Проблема в том, что некоторые элементы не имеют данных втаблицы рейтингов пока нет, поэтому я считаю, что она пытается усреднить данные, которых не существует.Использование DefaultOrEmpty() в конце, похоже, не имеет никакого эффекта.Любые предложения о том, как бы я это исправить?

Ответы [ 2 ]

13 голосов
/ 11 апреля 2012

Если вы используете эту форму:

var effectiveFloor = 
   policies
   .Where(p => p.PricingStrategy == PricingStrategy.EstablishFloor)
   .Max(p => p.Amount);

Тогда решение:

var effectiveFloor = 
    policies
    .Where(p => p.PricingStrategy == PricingStrategy.EstablishFloor)
    .DefaultIfEmpty()
    .Max(p => p==null ? 0 : p.Amount);

Найдено здесь

7 голосов
/ 28 мая 2011
   items = items.Where(x=>x.Ratings.Any()).
           OrderBy(x => x.Ratings.Average(t => t.score)).
           ThenBy(x => x.title);

Попробуй это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...