转换为值类型'Int32'失败空值LINQ

时间:2013-01-13 16:14:34

标签: c# asp.net linq

我正在尝试使用视图和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或零的事情,但我应该如何实现呢?

3 个答案:

答案 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