首页 > 解决方案 > 如何检查列值是否具有“值”

问题描述

我想检查“Acceptance”的值是否为“Accepted”以及它是否具有该值 - .Sum 否则我想得到 0,但是在找到正确的语法时遇到了一些问题。我无法获得“接受”值

我的方法

public decimal Prices2(string term)
{
   var kl= db.Order.Where(x => x.Client == term && x.Acceptance == "Accepted");
    if (term != null && kl.Acceptance == "Accepted" )
    {                       ^^//Element does not contain definition"Acceptance"
        return kl.Sum(x => x.Price);
    }
    else
    {
        return 0;
    }
}

我如何获得“任期”

public IEnumerable<string> GetClient(string term)
{
    return db.Order.Where(x => (term != null && x.Client.Contains(term)) || (term == null)).OrderBy(c => c.Client).Take(10).Select(a => a.Client).Distinct();
}

当我尝试这个时:

return db.Order.Where(x => x.Client == term && x.Acceptance == "Accepted").sum(x=>x.Price)

当客户没有“已接受”订单时出现错误

System.InvalidOperationException:“转换为值类型“System.Decimal”失败,因为具体化值为空。结果类型的泛型参数或查询必须使用可为空的类型。”</p>

我如何先检查是否有客户接受的订单,如果有则返回 0?

标签: c#asp.net-mvclinqasp.net-core

解决方案


首先将查询分配给一个变量,

var orders = db.Order.Where(x => x.Client == term && x.Acceptance == "Accepted");
var result= orders.Count() > 0 ? orders.Sum(x=>x.Price) : 0.0M;
return result;

你返回的方法类型应该是十进制

.


推荐阅读