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

时间:2014-12-26 07:40:47

标签: c# linq linq-to-sql

我知道有很多与此问题相关的链接,但我的情况有点奇怪。 tbEHDepartments和tbEHAccesses表是新添加的,因此在tbEHUsers表中它们的引用为null。到目前为止,我理解和搜索列中的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);

1 个答案:

答案 0 :(得分:0)

ManagerID和USerID是否是相同的数据类型?其中一个是Nullable因此“Int32?” ?

有时候,在数据库遇到数据之前不会抛出类似的错误。