[英]Cannot convert source type system.nullable to target type int
在嘗試使用實體框架檢索數據並將其分配給自定義類Customer時,我一直收到以下錯誤消息
無法將源類型“ system.nullable”轉換為目標類型“ int”
CustomerNumber和Route的數據類型為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>();
我該如何處理?
顯然, j.cost7
和j.cost9
的類型為Nullable<Int32>
。 我想是因為您沒有給我們看。
顯然,您不能將Nullable<Int32>
分配給Int32
類型,因為,如果該值為null
怎么辦? 編譯器不知道。 您需要確定在那種情況下該做什么,並相應地進行編碼。
假設您決定在數據庫中值為null
情況下將-1
分配為默認值,然后可以使用空值合並運算符並執行以下操作:
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
值(如果存在),則將CustomerNumber
的類型和Route
從Int32
更改為Nullable<Int32>
,或使用其他語法: int?
。
嘗試
if (j.cost7 == null)
{
CustomerNumber = 0;
}
else
{
CustomerNumber = j.cost7
}
您可以使用int的默認值。
例如:
CustomerNumber = j.cost7 ?? default(int),
Branch = j.cost8,
Route = j.cost9 ?? default(int),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.