LINQ和转换int?到int

时间:2014-10-05 01:48:28

标签: c# linq entity-framework

以下给我一个不能隐式转换类型' int?' to' 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可以为空(它不应该是,但它是)。这超出了这一点;

我只想知道如何处理这个问题?一般到int问题

感谢


修改

实际上,没关系; 我没有办法验证答案;这里的问题是根本问题;我在linq表达式中创建了一个全新的类实例,它将拥有自己的JobId; 因此,当我实际调用JobStructure构造函数时,我永远不会分配一个正确的jobId(linq中的一个新实例被创建,一旦我们退出构造函数,那个具有正确jobId的实例就已经死了。 ) 无论如何,我想让每个人都知道(我试图删除我的问题,但它警告不要......所以我把它留在这里,带有编辑的注释) 欢呼声

1 个答案:

答案 0 :(得分:0)

JobID不可为空,所以如果你的r.JobID为null,那么它将不会接受,因为JobID不能为null,因此如果为null则更好地使用Zero(0)

JobID = r.JobID ?? 0;

或者只是将JobID更改为可以为空的

 public int? JobID { get; set; }