我正在尝试使用视图和LINQ添加一些值,这是我的代码
var getProducts = from p in Entity.Products
join od in getOrderDetails on p.id equals od.productId into proDetails
orderby proDetails.Sum(q => q.quantity) descending
select new Common.Views.ProductQuantitySold()
{
productId = p.id,
productName = p.name,
productDesc = p.description,
qtySold = proDetails.Sum(q => q.quantity)
};
return getProducts.Take(10).AsQueryable();
在qtySold = proDetails.Sum(q => q.quantity)
行中,我收到了施法值错误。我知道这是关于null或零的事情,但我应该如何实现呢?
答案 0 :(得分:10)
尝试替换以下行:
qtySold = proDetails.Sum(q => q.quantity)
到
qtySold = proDetails.Sum(q => (int?)q.quantity) ?? 0
答案 1 :(得分:1)
我认为这是编译错误。如果不是,请发表评论。尝试将总和的结果投射到int
或将proDetails
的每个元素投射到int
。
示例:
qtySold = (int) proDetails.Sum(q => q.quantity)
可替换地:
qtySold = proDetails.Cast<int>().Sum(q => q.quantity)
如果有效,请告诉我。
答案 2 :(得分:1)
qtySold = proDetails.Sum(q => (Int32?)q.quantity) ?? 0