LINQ和转换int?到int
本文关键字:int 转换 LINQ | 更新日期: 2023-09-27 18:25:38
下面给出了一个不能隐式转换类型"int?"到"int"。存在显式转换(是否缺少强制转换?)错误:
public class JobStructure
{
public JobStructure()
{
}
public JobStructure(int? jobId, int? parentJobId)
{
var js = from r in dbc.fnJobStructure(someParameter_to_database_function)
select new JobStructure
{
JobID = r.JobID //<-------------ERROR: cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?)
};
}
public int JobID { get; set; }
}
JobID的类型是Int,来自我的数据库的r.JobID是可以为null的(它不应该为null,但它确实为null)。这超出了重点;
我只是想知道如何处理这个问题?一般中的to int问题
感谢
编辑
事实上,没关系;我没有办法验证答案;这里的问题是一个根本问题;我正在linq表达式中创建一个全新的类实例,该实例将有自己的JobId;因此,当我实际调用JobStructure构造函数时,我从来没有分配一个正确的jobId(linq中的一个新实例被创建,一旦我们离开构造函数,那个具有正确jobId的实例就死了。)无论如何,我想让每个人都知道(我试图删除我的问题,但它警告我不要这样做……所以我把它和编辑笔记一起留在这里)欢呼
JobID不可为null,因此如果你的r.JobID为null,那么它将不接受,因为JobID不可以为null,所以在为null的情况下最好使用Zero(0)
JobID = r.JobID ?? 0;
或者简单地将JobID更改为可为null的
public int? JobID { get; set; }