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

时间:2011-11-08 16:23:28

标签: 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();
}

我有错误:

  

无法隐式转换类型'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; }

}

只有imie和nazwisko是无效的,其余的允许空

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

现在工作。我改变了模型:

   decimal to decimal?

int to int?

谢谢大家的帮助

3 个答案:

答案 0 :(得分:32)

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

例如,如果你的对象的属性imieNullable<int>,这就是造成问题的原因,你可以这样做:

imie = d.imie.Value

您还需要关注d.imie为空的情况。例如:

imie = d.imie.HasValue ? d.imie.Value : 0

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

imie = d.imie ?? 0

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

答案 1 :(得分:18)

在你的uzytkownikModel类中,可以为null的属性应声明为“int?”还是“十进制?”而不是“int”和“decimal”。

答案 2 :(得分:4)

int?Nullable<int>。由于数据库列可能为null,因此映射的属性为Nullable。

请考虑将int?值分配给int变量的代码。

int? w = 2;
int? x = null;
int y = w ?? 3;
int z = x ?? 4;