Возвращает значение по умолчанию, если запрос пуст

Я создаю запрос linq, в котором мне нужно вернуть минимальное и максимальное значения лет и цен на автомобили.

Линкпад:

 var result = (from c in Cars           
                 where c.IsShowed == true
                       c.CarCod == carCod                                  
                 group c by c.CarCod into cg
                 select new  {
                 MinPrice = cg.Min(cv => cv.Price) ,
                 MaxPrice = cg.Max(cv => cv.Price),
                 MinYear =  cg.Min(cv => cv.Year),
                 MaxYear =  cg.Max(cv => cv.Year)
                  })
                 .SingleOrDefault();

result.Dump();

Как вернуть значение по умолчанию, например 0, для всех свойств MinPrice, MaxPrice, MinYear, MaxYear, если запрос пуст.


person Marcoscdoni    schedule 11.10.2018    source источник


Ответы (1)


Для этого вы должны объявить промежуточный класс Result:

 var result = (from c in Cars           
               where c.IsShowed && c.CarCod == carCod                                  
               group c by c.CarCod into cg
               select new Result {
                   MinPrice = cg.Min(cv => cv.Price) ,
                   MaxPrice = cg.Max(cv => cv.Price),
                   MinYear =  cg.Min(cv => cv.Year),
                   MaxYear =  cg.Max(cv => cv.Year)
               })
               .SingleOrDefault() ?? new Result();
person Slava Utesinov    schedule 11.10.2018