2013-01-13 32 views
4

我想一些值加在一起使用視圖和LINQ這是我的代碼如下鑄造價值型「的Int32」沒空值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

顯示你'ProductQuantitySold'類定義和類定義'quantity'。你有編譯時或運行時錯誤嗎? –

回答

10

嘗試替換下面的行:

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

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

我認爲這是一個編譯錯誤。如果不是,請留下評論。嘗試將你的總和結果轉換爲int或將proDetails的每個元素轉換爲int

例子:

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

或者:

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

請讓我知道,如果它的工作原理。

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