В чем разница между Где (лямбда-экспр.) И Первым (лямбда-экспр.), Когда мне нужно выбрать первый элемент? - PullRequest
1 голос
/ 08 декабря 2010

Я хотел бы знать разницу между этими двумя синтаксисами:

return db.Contacts.First(x => x.ContactID == id)

То, что я использовал до тех пор, пока не получил ошибку " Последовательность не содержит элементов ". тогда я должен снова использовать ниже.

return db.Contacts.Where(x => x.ContactID == id).First();

Должен быть нюанс, который я не понимаю.

Спасибо за помощь.

1 Ответ

2 голосов
/ 08 декабря 2010

First используется для получения первого элемента последовательности, но также требуется предикат, позволяющий фильтровать последовательность IEnumerable.

Таким образом, First вернет первый элемент IEnumerable с 1 или более результатами.

First(Predicate) вернет первый элемент результатов в IEnumerable с 1 или более результатами.

Если при использовании First имеется 0 элементов, выВы получите ошибку Последовательность не содержит элементов .Если вы ожидаете, что будет 0 результатов, вы должны использовать FirstOrDefault.FirstOrDefault также может принимать предикат, то есть

// Will return null if there are no elements with a matching contact Id
return db.Contacts.FirstOrDefault(x => x.ContactID == id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...