实体框架组和处理空值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体框架组和处理空值相关的知识,希望对你有一定的参考价值。

我试图从数据库表CustomerComplaintExpenseRows中返回月度总和。因为我需要月度值,即使它是0,我必须用sum查询来分组月度范围。在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
    },
]
答案

只是为了完整

设定值是这样的

value = (cc.sum == null)? 0: cc.sum

以上是关于实体框架组和处理空值的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

如何通过实体框架将空值传递给存储过程?

使用 LINQ 和实体框架检查 c# var 中的空值

添加新实体标量时实体框架 4 映射片段错误

在实体框架中找出导致异常的确切实体

尽管提供了值,但实体框架仍插入 null