Подтвердить что ты не робот

Метод расширения LINQ Max дает ошибку в пустых коллекциях

У меня есть следующий запрос:

var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => a.Sample_Num);

Если нет идентификатора 9, я получаю сообщение об ошибке. Мне нравится, чтобы результат был равен 0, если нет идентификатора 9.

Я пробовал:

var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => a.Sample_Num) ?? 0; 

а также другие варианты, но не смог заставить его работать

4b9b3361

Ответ 1

Вы можете использовать Any, чтобы проверить, есть ли соответствующий элемент:

int maxNumber = 0;
var id9 = dbContext.Where(a => a.Id == 9);
if(id9.Any())
{
    maxNumber = id9.Max(a => a.Sample_Num);
}

или вы можете использовать DefaultIfEmpty(defaultValue):

int maxNumber = dbContext
    .Where(a => a.Id == 9)
    .Select(a => a.Sample_Num)
    .DefaultIfEmpty(0)
    .Max();