【发布时间】:2019-07-01 20:49:34
【问题描述】:
我想检查“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”失败,因为具体化值为空。结果类型的泛型参数或查询必须使用可为空的类型。”
我如何先检查是否有客户接受的订单,如果有则返回0?
【问题讨论】:
-
这是因为变量
kl是一个IEnumerable<Order>,其中Client属性等于作为参数给出的变量term,其中Acceptance设置为“已接受” -
好的,我知道
Acceptance不是一种方法,所以我不能那样使用它,但是我如何检查该列的值来进行计算或得到 0? -
您想获取给定客户所有已接受订单价格的总和吗?
-
return db.Order.Where(x => x.Client == term && x.Acceptance == "Accepted").sum(x=>x.Price);
-
@Ammar 是的,我想汇总所有接受的订单,但是当客户没有接受的订单时我收到错误,因为它为空
标签: c# asp.net-mvc linq asp.net-core