LINQ 到实体错误:“无法创建类型为”System.Int32[]“的空常量值.仅实体类型,枚举类型

本文关键字:类型 实体 常量 的空常量值 枚举 错误 创建 System LINQ Int32 | 更新日期: 2023-09-27 18:31:29

我在RosterSummaryData_Subject_Local实体上执行 linq 查询时收到列出的错误。我似乎无法弄清楚出了什么问题或解决方案。

无法创建类型为"System.Int32[]"的空常量值。只 中支持实体类型、枚举类型或基元类型 此上下文。

我对代码第一个实体上下文的 LINQ 查询:

var subjLocal = customerContext.RosterSummaryData_Subject_Local.Where(s => 
    (s.fkRosterSetID == 0) &&
    (statsInfo.TestInstanceIDsList.Contains(s.fkTestInstanceID)) &&
    (s.fkTestTypeID == statsInfo.TestTypeID) &&
    (statsInfo.SchoolYearIDsList.Contains(s.fkSchoolYearID)) &&
    (s.fkRosterTypeID == 1) &&
    (s.fkSchoolID == 0) &&
    (s.fkDepartmentID == 1) &&
    (s.fkCourseID == 1) &&
    (s.fkPeriodID == 1) &&
    (statsInfo.DemoCatIDsList.Contains(s.fkDemoCommonCategoryID)) &&
    (statsInfo.DemoCodeIDsList.Contains(s.fkDemoCommonCodeID)) &&
    (statsInfo.TestSubjectIDsList.Contains(s.fkTest_SubjectID)));

LINQ 到实体错误:“无法创建类型为”System.Int32[]“的空常量值.仅实体类型,枚举类型

听起来您的Int32[]类型之一是null。在访问.Contains方法之前,请尝试添加检查:

var subjLocal = customerContext.RosterSummaryData_Subject_Local.Where(s => 
    (s.fkRosterSetID == 0) &&
    (statsInfo.TestInstanceIDsList != null &&
        statsInfo.TestInstanceIDsList.Contains(s.fkTestInstanceID)) &&
    (s.fkTestTypeID == statsInfo.TestTypeID) &&
    (statsInfo.SchoolYearIDsList != null &&
        statsInfo.SchoolYearIDsList.Contains(s.fkSchoolYearID)) &&
    (s.fkRosterTypeID == 1) &&
    (s.fkSchoolID == 0) &&
    (s.fkDepartmentID == 1) &&
    (s.fkCourseID == 1) &&
    (s.fkPeriodID == 1) &&
    (statsInfo.DemoCatIDsList != null &&
        statsInfo.DemoCatIDsList.Contains(s.fkDemoCommonCategoryID)) &&
    (statsInfo.DemoCodeIDsList != null &&
        statsInfo.DemoCodeIDsList.Contains(s.fkDemoCommonCodeID)) &&
    (statsInfo.TestSubjectIDsList != null &&
        statsInfo.TestSubjectIDsList.Contains(s.fkTest_SubjectID)));

或者,如果它们可以为 null(我假设它不是,但以防万一),您可以更改上述检查以遵循以下模式:

(statsInfo.DemoCatIDsList == null ||
    statsInfo.DemoCatIDsList.Contains(s.fkDemoCommonCategoryID)) &&