Разница между firstordefault() и singleordefault() в C#?
Между SingleOrdefault() и FirstOrdefault()
Что я уже пробовал:
Difference between FirstorDefault() and SingleOrDefault() in C#?
Difference between FirstorDefault() and SingleOrDefault() in C#?
First или default вернет тип default, если в списке ничего нет, и первый элемент, если есть один или несколько элементов.
Single или default вернет тип default, если в списке ничего нет, единственный элемент в списке, если есть только один элемент, и выдаст исключение, если в списке есть более одного элемента.
Таким образом, разница заключается в том, что FirstOrDefault игнорирует, когда существует более одного элемента, SingleOrDefault создает исключение, если существует более одного элемента.
Игнорируя тот факт, что в разделе "Что я пробовал" не говорится, что вы действительно что-то пробовали, это довольно интересный вопрос для ответа. Давайте сначала уберем сходство между этими двумя методами:
Они оба возвращают одно значение.
Это значение будет найдено, если только нет совпадения, и в этом случае будет возвращено значение по умолчанию.
Значение по умолчанию будет либо null (для nullable типов), либо по умолчанию для ненулевого типа.
Учитывая этот набор способностей, почему они отличаются?
First возвращает первый соответствующий элемент. Другими словами, он прекращает сканирование списка КАК ТОЛЬКО ОН НАЙДЕТ СОВПАДЕНИЕ.
Single возвращает соответствующий элемент только в том случае, если он существует. Другими словами, он продолжает сканирование, чтобы убедиться, что есть только один соответствующий элемент.