无法隐式转换类型'int?' 'int'

use*_*034 17 linq

在这个查询中我有3条记录(int-(telefon = d.telefon),decimal-(pesel = d.pesel),decimal-(nip = d.nip))另一条记录是字符串.

public ActionResult detail(int LoginID)
{
    var user = (from d in baza.uzytkowniks
                where LoginID == d.LoginID
                select new uzytkownikModel {
                    imie = d.imie, 
                    nazwisko = d.nazwisko, 
                    telefon = d.telefon, 
                    pesel = d.pesel, 
                    nip = d.nip, 
                    email = d.email, 
                    adres_zamieszkania = d.adres_zamieszkania}).ToList();

    ViewBag.daneuser = user;
    return View();
}
Run Code Online (Sandbox Code Playgroud)

我有错误:

无法隐式转换类型'int?' 'int'.存在显式转换(您是否错过了演员?)

和'十进制'两个错误?而不是'int?'.

模型:

 public class uzytkownikModel
    {
    [Required]
    public string imie { get; set; }

    [Required]
    public string nazwisko { get; set; }


    public decimal pesel { get; set; }
    public decimal nip { get; set; }

    public string adres_zamieszkania { get; set; }
    public int telefon { get; set; }
    public string email { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

只有imie和nazwisko是不可侵犯的,其余的允许null

////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////////////

现在工作.我换了模特:

   decimal to decimal?
Run Code Online (Sandbox Code Playgroud)

int to int?
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助

Joh*_*hnD 35

您需要发布更多代码才能获得明确的答案,但在某个地方,您的某个变量可以为空,并将其分配给您需要执行的非可空类型.Value.

例如,如果您的对象属性imieNullable<int>,并且这是导致您的问题的原因,您可以这样做:

imie = d.imie.Value
Run Code Online (Sandbox Code Playgroud)

您还需要查看d.imienull 为的情况.例如:

imie = d.imie.HasValue ? d.imie.Value : 0
Run Code Online (Sandbox Code Playgroud)

或者,如果你喜欢?? operator(计算为第一个非null值):

imie = d.imie ?? 0
Run Code Online (Sandbox Code Playgroud)

(我只是用它d.imie作为一个例子 - 没有足够的代码发布到pintpoint确切的问题.)


hsp*_*ain 18

在你的uzytkownikModel类中,可以为空的属性应声明为"int?" 还是"十进制?" 而不是"int"和"decimal".