Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ中出现不一致错误无法将空值分配给类型为System.Int32的成员,该类型是不可为空的值类型_C#_Linq_Linq To Sql - Fatal编程技术网

C# LINQ中出现不一致错误无法将空值分配给类型为System.Int32的成员,该类型是不可为空的值类型

C# LINQ中出现不一致错误无法将空值分配给类型为System.Int32的成员,该类型是不可为空的值类型,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我知道有很多与这个问题相关的链接,但我的场景有点奇怪。 tbEHDepartments和TBEHAccesss表是新添加的,因此它们在tbEHUsers表中的引用为空。据我所知,在列中搜索NULL值是错误的原因,但在ManagerID为NULL的情况下有效。我的意思是,如果我从select查询中删除grp1.DeptID,那么即使ManagerId为null,一切都会正常工作 var data = from t in db.tbEHUsers.DefaultIfEmpty()

我知道有很多与这个问题相关的链接,但我的场景有点奇怪。 tbEHDepartments和TBEHAccesss表是新添加的,因此它们在tbEHUsers表中的引用为空。据我所知,在列中搜索NULL值是错误的原因,但在ManagerID为NULL的情况下有效。我的意思是,如果我从select查询中删除grp1.DeptID,那么即使ManagerId为null,一切都会正常工作

var data = from t in db.tbEHUsers.DefaultIfEmpty()
           join t3 in db.tbEHUsers.DefaultIfEmpty() on t.ManagerID equals t3.UserID into t2
           from grp in t2.DefaultIfEmpty()

           join d in db.tbEHDepartments.DefaultIfEmpty() on t.DeptID equals d.DeptID into t4
           from grp1 in t4.DefaultIfEmpty()

           join a in db.tbEHAccesses.DefaultIfEmpty() on t.AccessID equals a.AccessID into t5
           from grp2 in t5.DefaultIfEmpty()
           orderby t.FirstName
           select new { t.UserID, t.UserName, t.FirstName, t.LastName, t.Email, t.ManagerID, TeamLead = grp.FirstName + " " + grp.LastName, grp1.DeptID };//, grp1.DeptName, grp2.AccessID, AccessName=grp2.Name };

var dt = Utility.ToDataTable(data);

ManagerID和USerID是相同的数据类型吗?其中一个是否可以为空,因此为“Int32”


有时,直到数据库中遇到数据时才会抛出这样的错误。

这正是LINQ到SQL还是实体框架?可能是@Gert的重复,谢谢,DeptId=(int?)grp1.DeptId解决了我的问题。嗯,为什么在2014年底使用死伪ORM?EF6.1现在已经相当不错了。