在这个查询中,我有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?
谢谢大家的帮助
答案 0 :(得分:32)
您需要发布更多代码才能获得明确的答案,但某个变量可以为空,并且要将其分配给非可空类型,您需要执行.Value
。
例如,如果你的对象的属性imie
是Nullable<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;