Подтвердить что ты не робот

DefaultIfEmpty в LINQ

Может кто-нибудь объяснить, как DefaultIfEmpty() можно использовать в LINQ. Я подготовил некоторые материалы, но все еще нужно что-то твердое, чтобы понять, что это такое.

4b9b3361

Ответ 1

Он в основном возвращает коллекцию с единственным элементом, если исходный набор пуст.

var numbers = new int[] {1, 2, 3};
var aNumber = numbers.First();

возвращает 1

но

var numbers = new int[];
var aNumber = numbers.DefaultIfEmpty(12).Single();

возвращает 12, поскольку коллекция пуста

Ответ 2

Разница заключается в том, что DefaultIfEmpty возвращает коллекцию объектов, а FirstOrDefault возвращает объект. Если не было найдено никаких результатов, DefaultIfEmpty все равно возвращает Enumerable с единственным элементом, который имеет значение по умолчанию, тогда как FirstOrDefault возвращает T сам.

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