4

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

4

3 回答 3

10

尝试替换以下行:

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

qtySold = proDetails.Sum(q => (int?)q.quantity) ?? 0
于 2013-01-13T16:18:19.030 回答
1

我认为这是一个编译错误。如果不是,请发表评论。尝试将 sum 的结果转换为 anint或将 的每个元素proDetails转换为 an int

例子:

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

或者:

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

请让我知道它是否有效。

于 2013-01-13T16:17:58.550 回答
1
qtySold = proDetails.Sum(q => (Int32?)q.quantity) ?? 0
于 2013-01-13T16:23:18.017 回答