FirstOrDefault и SingleOrDefault — это оба метода LINQ для получения элементов из коллекций, но они отличаются своим поведением и областью применения.
FirstOrDefault возвращает первый элемент, соответствующий условию, или первый элемент, если условие не указано. Он не проверяет общее количество совпадающих элементов.
SingleOrDefault возвращает элемент только когда ровно одно совпадение существует. Если найдено несколько совпадающих элементов, он выбрасывает исключение InvalidOperationException.
Оба метода возвращают значение по умолчанию, когда не найдено ни одного совпадающего элемента:
nullint, double, bool): возвращают значение по умолчанию для типа (0 для целых чисел, false для булевых значений)// FirstOrDefault - получает первое совпадение
var user = users.FirstOrDefault(u => u.Status == "Active");
// SingleOrDefault - ожидает ровно одно совпадение
var admin = users.SingleOrDefault(u => u.Id == 42);
Ключевое отличие в том, что FirstOrDefault предполагает, что несколько результатов допустимы, а SingleOrDefault требует строгого ограничения один-или-ноль.
SingleOrDefault выбрасывает InvalidOperationException при обнаружении нескольких совпадающих элементов, тогда как FirstOrDefault просто возвращает первое совпадение без проверки общего количества.
Новый — ещё не проверен сообществом
Вы