Назад к вопросам
Middle
134
questionbank

В чем разница между методами FirstOrDefault и SingleOrDefault?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

FirstOrDefault() возвращает первый элемент последовательности, удовлетворяющий условию, или значение по умолчанию (null для ссылочных типов, 0 для числовых типов), если таких элементов нет.
SingleOrDefault() возвращает единственный элемент последовательности, удовлетворяющий условию, или значение по умолчанию, если таких элементов нет. Если элементов больше одного, выбрасывается исключение InvalidOperationException.

Особенность FirstOrDefault SingleOrDefault
Найден 1+ элементов Возвращает первый Выбрасывает исключение
Не найдено элементов Возвращает значение по умолчанию Возвращает значение по умолчанию
Ожидаемое количество Нуль или более Ровно один
// Пример использования FirstOrDefault
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumber = numbers.FirstOrDefault(n => n % 2 == 0); // evenNumber будет 2
var nonExistent = numbers.FirstOrDefault(n => n > 10);   // nonExistent будет 0

// Пример использования SingleOrDefault
var singleNumber = new List<int> { 7 };
var result = singleNumber.SingleOrDefault(); // result будет 7

var emptyList = new List<int>();
var defaultValue = emptyList.SingleOrDefault(); // defaultValue будет 0

var multipleNumbers = new List<int> { 1, 2, 3 };
// var error = multipleNumbers.SingleOrDefault(); // Эта строка выбросит InvalidOperationException