簡體   English   中英

無法將源類型system.nullable轉換為目標類型int

[英]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.cost7j.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的類型和RouteInt32更改為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM