c# - Linq错误“运算符'=='不能应用于'int'和'System.Linq.IQueryable <t>类型的操作数”和RemoveRange </t>

时间:2014-11-17 03:52:48

标签: c# linq entity-framework

运行以下代码时收到此错误:

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));

1 个答案:

答案 0 :(得分:3)

s.fkSummarySubjectLocalID == subjLocal

在这行代码中,您似乎等同于integerRosterSummaryData_Subject_Local。您可以使用扩展方法Where来获取具有ID的对象。

如果subjLocal只包含一个元素,您可以将FirstOrDefault的调用添加到上一个语句,然后使用以下内容:

s.fkSummarySubjectLocalID == subjLocal.ID

如果subjLocal有多个条目,那么可以在Where电话中使用此类内容:

subjLocal.Any(x => x.ID == s.fkSummarySubjectLocalID)