运行以下代码时收到此错误:
Operator '==' cannot be applied to operands of type 'int' and 'System.Linq.IQueryable<StatisticsGenerator.RosterSummaryData_Subject_Local>
我有两个实体类:RosterSummaryData_Subject_Local和RosterSummaryData_Subject_Local_Bands。 Subject_Local_Bands包含对Subject_Local中主键的外键引用。我想得到subjLocal所以我可以在类上执行一个RemoveRange,将变量subjLocal传递给方法,如下所示:
customerContext.RosterSummaryData_Subject_Local.RemoveRange(subjLocal);
这很完美,但我想对变量subjLocalBands的Local_Bands做同样的事情:
customerContext.RosterSummaryData_Subject_Local_Bands.RemoveRange(subjLocalBands);
我理解错误发生在我设置subjLocalBands的行上,并尝试将外键int与IQueryable变量subjLocal进行比较,但我不知道如何在这种情况下获得正确的IQueryable Local_Bands中的外键fkSummarySubjectLocalID等于subjLocal中的外键。有没有一种简单的方法可以做到这一点,因为我对实体和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)));
var subjLocalBands = customerContext.RosterSummaryData_Subject_Local_Bands.Where(s => s.fkSummarySubjectLocalID == subjLocal));
答案 0 :(得分:3)
s.fkSummarySubjectLocalID == subjLocal
在这行代码中,您似乎等同于integer
和RosterSummaryData_Subject_Local
。您可以使用扩展方法Where
来获取具有ID的对象。
如果subjLocal
只包含一个元素,您可以将FirstOrDefault
的调用添加到上一个语句,然后使用以下内容:
s.fkSummarySubjectLocalID == subjLocal.ID
如果subjLocal
有多个条目,那么可以在Where
电话中使用此类内容:
subjLocal.Any(x => x.ID == s.fkSummarySubjectLocalID)