Назад к вопросам
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