Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查linq中的空值_C#_Linq - Fatal编程技术网

C# 检查linq中的空值

C# 检查linq中的空值,c#,linq,C#,Linq,如何在linq查询中检查null 代码如下: var query = _orderRepository.Table; query = query.Where(o => o.AccountId == accountId); var result = from d in query where d.CreatedOnUtc != null select d;

如何在linq查询中检查null

代码如下:

 var query = _orderRepository.Table;
        query = query.Where(o => o.AccountId == accountId);
        var result = from d in query
                     where d.CreatedOnUtc != null
                     select d;


        if (result != null)
        {


        }
        //var MinDate = from d in query
        //              where (d.CreatedOnUtc == null ? d.CreatedOnUtc == null : d.CreatedOnUtc == (from d1 in query select d1.CreatedOnUtc).Min())
        //            select d.CreatedOnUtc;
        //var MaxDate = from d in query
        //              where (d.CreatedOnUtc == null ? d.CreatedOnUtc == null : d.CreatedOnUtc == (from d1 in query select d1.CreatedOnUtc).Max())
        //              select d.CreatedOnUtc;

        var rateSum = (query.Sum(d => d.OrderSubtotal));
        var MinDate = (from d in query select d.CreatedOnUtc).Min();
        var MaxDate = (from d in query select d.CreatedOnUtc).Max();
        decimal qry;
        //query = query.Where(c =>
        //((DbFunctions.DiffDays(MinDate, MaxDate) == 0) ? rateSum : (DbFunctions.DiffDays(MinDate, MaxDate) / 30 == 0) ? "rateSum" ? "(rateSum / (DbFunctions.DiffDays(MinDate, MaxDate) / 30)"));
        if ((DbFunctions.DiffDays(Convert.ToDateTime(MinDate), Convert.ToDateTime(MaxDate)) == 0))
            //if ((SqlFunctions.DateDiff("", Convert.ToDateTime(MinDate), Convert.ToDateTime(MaxDate)) == 0))
            {
            qry = (rateSum);
        }
        else if ((DbFunctions.DiffDays(Convert.ToDateTime(MinDate), Convert.ToDateTime(MaxDate)) / 30 == 0))
        {
            qry = (rateSum);

        }
        else
        {
            qry = Convert.ToDecimal(rateSum / (DbFunctions.DiffDays(MinDate, MaxDate) / 30));
        }

        var orderCount = qry;
        return orderCount;
有谁能告诉我,当查询值为null时,如何在rateSum、MinDate和MaxDate中检查null


我尝试了很多,但没有工作,所以有什么建议吗?

这将允许rateSum可以为空小数。
我特别在外部联接查询中使用它,以避免转换为值类型失败…异常

var rateSum = (query.Sum(d => (decimal?)d.OrderSubtotal));
然后您可以检查rateSum是否为空

当我需要检查查询是否为空时,我使用
query.Count()


要检查MinDate是否为空,只需应用相同的系统:

var MinDate = (from d in query select (DateTime?)d.CreatedOnUtc).Min();

下面的方法对你不管用吗

    var rateSum = query.Where(d=>d.OrderSubtotal !=null).Sum(d => d.OrderSubtotal);
PS:您需要将OrderSubtotal更改为十进制?(可为空的十进制数)如果该值以DB为单位可为空

对于MinDate,如下所示

    var MinDate = query.Where(d=>d.CreatedOnUtc !=null).Min(d =>d.CreatedOnUtc);

十进制类型为OrderSubtotal@Nkosi你能给出一个答案吗?请澄清你的具体问题或添加额外的细节,以突出你所需要的。正如目前所写的,很难准确地说出你在问什么。请参阅本页以帮助澄清此问题。凌乱的布局、糟糕的拼写和标点符号传达了对手头问题的匆忙和缺乏思考。你只是问我们怎么做而没有真正解释你的问题。很可能,如果你冷静地解释它,你也会找到解决方案。CreatedOnUtc是日期时间,所以当我检查它时,会给出错误我如何检查MinDate?如果没有更改,我如何检查PS:你需要将OrderSubtotal更改为decimal?(nullable decimal)如果值在DB中为nullable??这是我想在linq中实现相同内容的sql查询..那么你能给我一个正确的解决方案吗?CreatedOnUtc是日期时间,所以当我检查它时,它会给我错误–此函数只能从linq调用到实体。如果((DbFunctions.DiffDays(Convert.ToDateTime(MinDate))错误出现,Convert.ToDateTime(MaxDate))==0)如何检查DiffDays?如果MinDate或MaxDate为Null,则不执行DiffDays这是我希望在linq中实现相同内容的sql查询。因此,您能给我一个适当的解决方案吗?您能写下来吗??