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的实例就死了。)无论如何,我想让每个人都知道(我试图删除我的问题,但它警告我不要这样做……所以我把它和编辑笔记一起留在这里)欢呼

LINQ和转换int?到int

JobID不可为null,因此如果你的r.JobID为null,那么它将不接受,因为JobID不可以为null,所以在为null的情况下最好使用Zero(0)

JobID = r.JobID ?? 0;

或者简单地将JobID更改为可为null的

 public int? JobID { get; set; }