我试图获取满足某些值列表的记录。
var batch_institute = (from tb in context.tblBatch_Institute
where tb.BatchID == model.BatchID
select tb);
var currentMaxBatchNo = (from tb in context.tblBatches
join tbins in context.tblBatch_Institute on tb.BatchID equals tbins.BatchID
where tb.AcadamicSemester == batch.AcadamicSemester && tb.AcadamicYear == batch.AcadamicYear
&& tb.CampusID == batch.CampusID && tb.FacultyID == batch.FacultyID && tb.IntakeID == batch.IntakeID &&
tb.IntakeYear == batch.IntakeYear && tb.Weekend_Day == batch.Weekend_Day
&& batch_institute.Any(code => tbins.InstituteID.Equals(code))
select tbins);
我认为我在第二个linq查询
中对下面的代码做错了batch_institute.Any(code => tbins.InstituteID.Equals(code))
我在下方收到错误。
DbComparisonExpression需要具有可比类型的参数
答案 0 :(得分:0)
第一个查询返回tblBatch_Institute
表中的行集合。
但是,您尝试将行与第二个查询中的各个InstituteID
值进行比较。
将您的第一个查询修改为仅返回InstituteID
值,如下所示:
var batch_institute_ids = (from tb in context.tblBatch_Institute
where tb.BatchID == model.BatchID
select tb.InstituteID);
然后以下比较应该有效:
batch_institute_ids.Any(id => tbins.InstituteID.Equals(id))
假设EF能够将其转换为有效的SQL查询,您可以更改第二个查询以使用它。
batch_institute_ids.Contains(tbins.InstituteID)