2015-07-03 55 views
0

我一直得到之下,而嘗試使用實體框架 檢索數據並分配給我的自定義類客戶無法轉換源類型system.nullable目標類型爲int

不能轉換源類型「system.nullable」錯誤消息爲目標類型「詮釋」

CUSTOMERNUMBER和路線都的Int32,並在數據庫中的字段的數據類型的允許空值

 select new Customer() 
      { 
       AccountListId = j.cost1, 
       Csr = j.cost2, 
       CustomerName = j.cost3, 
       Address = j.cost4, 
       Telephone = j.cost5, 
       Contact = j.cost6, 
       CustomerNumber = j.cost7, 
       Branch = j.cost8, 
       Route = j.cost9, 
      }).ToList<Customer>(); 

我該如何處理呢?

+0

你想分配給'Int32'領域,如果從數據庫中值爲'null'什麼。顯然,'null'是無效的。你想設置「0」還是「-1」,或者是什麼? – sstan

+0

可能重複的[如何將nullable int轉換爲int](http://stackoverflow.com/questions/5995317/how-to-convert-nullable-int-to-int) –

回答

2

顯然,j.cost7j.cost9Nullable<Int32>類型。我假設,因爲你沒有向我們展示過。

顯然,您不能將Nullable<Int32>分配給Int32類型,因爲如果值爲null,您會做什麼?編譯器不知道。你需要決定在這種情況下做什麼,並相應地編碼。

比方說,你決定轉讓-1作爲默認值在數據庫中的null價值的話,那麼你可以使用null-coalescing operator,做這樣的事情:

select new Customer() 
     { 
      AccountListId = j.cost1, 
      Csr = j.cost2, 
      CustomerName = j.cost3, 
      Address = j.cost4, 
      Telephone = j.cost5, 
      Contact = j.cost6, 
      CustomerNumber = j.cost7 ?? -1, 
      Branch = j.cost8, 
      Route = j.cost9 ?? -1, 
     }).ToList<Customer>(); 

如果你真的想要什麼將能夠存儲null值(如果有),然後將CustomerNumberRoute的類型從Int32更改爲Nullable<Int32>,或者使用替代語法:int?

0

嘗試

if (j.cost7 == null) 
{ 
    CustomerNumber = 0; 
} 
else 
{ 
    CustomerNumber = j.cost7 
} 
+0

這不會工作,語法上,在一個與構造函數。 –

0

您可以使用int的默認值。

如:

CustomerNumber = j.cost7 ?? default(int), 
     Branch = j.cost8, 
     Route = j.cost9 ?? default(int), 
相關問題