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

本文关键字:LINQ 失败 null 转换 类型 Int32 | 更新日期: 2023-09-27 17:53:14

我正在尝试使用视图和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)行中,我得到了强制转换值错误。我知道这是关于零或零的东西,但我应该如何实现它?

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

尝试替换以下行:

qtySold = proDetails.Sum(q => q.quantity)

qtySold = proDetails.Sum(q => (int?)q.quantity) ?? 0

我认为这是一个编译错误。如果不是,请留下评论。尝试将求和的结果转换为int或将proDetails的每个元素转换为int

例子:

qtySold = (int) proDetails.Sum(q => q.quantity)

另外:

qtySold = proDetails.Cast<int>().Sum(q => q.quantity)

请让我知道它是否有效

qtySold = proDetails.Sum(q => (Int32?)q.quantity) ?? 0