在Linq列出条件

时间:2014-10-30 02:19:21

标签: c# linq entity-framework

我试图获取满足某些值列表的记录。

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需要具有可比类型的参数

1 个答案:

答案 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)