Entity Framework Group Sum для обработки пустых значений - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь вернуть месячную сумму из таблицы базы данных 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
    },
]

1 Ответ

0 голосов
/ 26 апреля 2020

Просто для полноты

установить значение вот так ..

value = (cc.sum == null)? 0: cc.sum
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...