DefaultIfEmpty(), если значение не найдено - добавить значение по умалчиванию в коллекцию

Здравствуйте!

 var service = payment?.Service.Where(s => s.Name == name[8])
                               .DefaultIfEmpty(new() { Name = name[8] })
                               .FirstOrDefault();

Данный запрос ищет объект в коллекции Service:

.Where(s => s.Name == name[8])

Если он не найден - использует значение по умалчиванию (создает новый объект):

.DefaultIfEmpty(new() { Name = name[8] })

Но созданный объект не додается в коллекцию в которой выполняется поиск.

Как можно реализовать добавление значения по умалчиванию в коллекцию?

Не используя DefaultIfEmpty() я делал это так:

 var service = payment?.Service.FirstOrDefault(s => s.Name == name[8]);

   if (service == null)
    {
     service = new()
       {
         Name = name[8]
       };

     payment?.Service.Add(service);
    }

Но с DefaultIfEmpty код выглядит гораздо более читабельнее.

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


Ответы (0 шт):