Я пытаюсь вернуть месячную сумму из таблицы базы данных CustomerComplaintExpenseRows. Так как мне нужно ежемесячное значение, даже если оно равно 0, я должен сгруппировать диапазон месяцев с суммой запроса. В var q cc .sum может быть нулевым через несколько месяцев, и десятичный тип данных не примет операцию «?? 0». Как я могу получить мой код для возврата 0, если значение пустое?
var firstDayOfYear = new DateTime(DateTime.Now.Year, 1, 1);
var lastDayOfYear = new DateTime(DateTime.Now.Year, 12, 31);
var months = Enumerable.Range(1, 12)
.Select(month => month)
.ToList();
var complaints = _context.CustomerComplaintExpenseRows
.Where(a => a.CustomerComplaint.ComplaintDate > firstDayOfYear
&& a.CustomerComplaint.ComplaintDate < lastDayOfYear)
.GroupBy(o => o.CustomerComplaint.ComplaintDate.Month)
.Select(a => new
{
a.Key,
sum = a.Sum(i => i.RowValue)
})
.ToList();
var q = from m in months
join cc in complaints on m equals cc.Key into joined
from cc in joined.DefaultIfEmpty()
select new
{
name = CultureInfo.CreateSpecificCulture("fi-FI")
.DateTimeFormat
.GetAbbreviatedMonthName(m),
value = cc.sum
};
Пример результатов Я ищу:
[
{
"name": 'Jan',
"value": 300,00
},
{
"name": 'Feb',
"value": 0,00
},
{
"name": 'Mar',
"value": 5,30
},
]