Метод расширения 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;
а также другие варианты, но не смог заставить его работать
Ответы
Ответ 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();