DefaultIfEmpty в LINQ
Метод DefaultIfEmpty подставляет одно запасное
значение, если предыдущий оператор не оставил ни
одного элемента. Без него First на пустой
последовательности бросит исключение.
Пустой массив после фильтра не даёт ни одного числа больше нуля. Вместо него подставляется аргумент по умолчанию:
int[] empty = [];
var q = empty.Where(n => n > 0).DefaultIfEmpty(-1);
Console.WriteLine(q.First());
Если фильтр что-то оставил, подмены не происходит.
В массиве два положительных числа, оба равны
2. Первым будет 2, а всего таких
чисел тоже 2:
int[] nums = [0, 2, 2, -1];
var q = nums.Where(n => n > 0).DefaultIfEmpty(-1);
Console.WriteLine(q.First());
Console.WriteLine(q.Count());
Возьмите пустой список температур, подставьте
запасное значение 0 и выведите его.
Выведите первое число больше пяти из списка оценок. Запасное значение появляться не должно.