В Linq какая разница между .FirstOrDefault и .SingleOrDefault - PullRequest
7 голосов
/ 05 октября 2011

Я не знаю разницы между FirstOrDefault и SingleOrDefault.Когда я должен использовать первый и когда я должен использовать второй?

Ответы [ 3 ]

14 голосов
/ 05 октября 2011

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

SingleOrDefault() для случая, когда во входной коллекции ожидается ноль или один результат, и вызов возвращает один результат, если присутствует ровно один результат, по умолчанию, если нет результатов, и исключение, если более одного результата.

7 голосов
/ 05 октября 2011

SingleOrDefault сгенерирует исключение «Последовательность содержит более одного элемента», если существует более одного элемента.

0 голосов
/ 11 марта 2014

firstordefault, он будет принимать количество строк, но просто вернет первую из них, если он равен нулю, он может обработать исключение. Сначала он будет принимать количество строк, но просто вернет первую из них, если он равен нулю, он выдастисключение singleordefault, оно займет только одну строку, но вернет, что оно может обрабатывать исключения, если оно пустое, оно займет только одну строку, но вернет его и не сможет обработать исключения

Если ваш результирующий набор возвращает 0 записей:

SingleOrDefault возвращает значение по умолчанию для типа (например, значение по умолчанию для int равно 0) FirstOrDefault возвращает значение по умолчанию для типа. Если ваш результирующий набор возвращает 1 запись:

SingleOrDefault возвращает эту запись FirstOrDefault возвращает эту записьЕсли ваш набор результатов возвращает много записей:

SingleOrDefault вызывает исключение FirstOrDefault возвращает первую запись Вывод:

Если вы хотите, чтобы исключение было выдано, если набор результатов содержит много записей, используйте SingleOrDefault.

Есливам всегда нужна 1 запись, независимо от того, что содержится в наборе результатов, используйте FirstOrDefault

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...