Назад к вопросам
Junior — Middle
70
Какие отличия между методами FirstOrDefault и SingleOrDefault в LINQ?
Ответ от нейросети
sobes.tech AI
В LINQ методы FirstOrDefault и SingleOrDefault используются для выборки элементов из последовательности, но имеют разные семантики:
FirstOrDefaultвозвращает первый элемент последовательности, если он есть, иначе возвращает значение по умолчанию (null для ссылочных типов).SingleOrDefaultвозвращает единственный элемент последовательности, если он ровно один, иначе:- Если элементов нет — возвращает значение по умолчанию.
- Если элементов больше одного — выбрасывает исключение
InvalidOperationException.
Пример:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // вернет 1
var single = numbers.SingleOrDefault(); // выбросит исключение, т.к. элементов больше одного
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // вернет 0 (default для int)
var singleEmpty = empty.SingleOrDefault(); // тоже вернет 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // вернет 42
Итого:
- Используйте
FirstOrDefault, когда хотите получить первый элемент или null, если элементов нет. - Используйте
SingleOrDefault, когда ожидаете ровно один элемент и хотите получить ошибку, если элементов больше одного.