2014-10-30 2 views
0

Я пытаюсь получить записи, которые удовлетворяют определенному списку значений.Список в Linq, где условие

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

Первый запрос возвращает набор строк из 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) 
Смежные вопросы