Выбор ответа Junior Коллекции и LINQ обновлено

First, Single и их OrDefault

Вопрос

Что сделает Single(x => x.Id == 5), если в коллекции два элемента с Id == 5?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Бросит InvalidOperationException. Single проверяет, что подходящий элемент ровно один, и бросает InvalidOperationException, если их ноль или больше одного.

Варианты ответа

  1. Вернёт первый найденный элемент
  2. Бросит InvalidOperationExceptionправильный ответ
  3. Вернёт null, так как ответ неоднозначен
  4. Вернёт последний найденный элемент

Разбор

Single проверяет, что подходящий элемент ровно один, и бросает InvalidOperationException, если их ноль или больше одного. SingleOrDefault вернёт default при отсутствии, но тоже бросит при двух и более. Первый элемент без проверки уникальности возвращает First, последний Last. Single дороже: ему приходится просмотреть всю последовательность.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.