LINQ to Entities无法识别方法'Boolean Contains(Int32)'方法

时间:2013-07-30 06:47:15

标签: c# linq entity-framework

以下异常飞行

  

LINQ to Entities无法识别方法'布尔值   包含(Int32)'方法,并且此方法无法翻译   进入商店表达。

尝试执行以下查询时

List<int> studentIDs = Common.getFilterStudents();
var query = from a in studentTable
            where studentIDs.Contains(a.StudentID)
            select a;

如何使用studentIDs列表过滤查询?

1 个答案:

答案 0 :(得分:6)

在EF版本中无法使用Contains,因为在EF 4中添加了对Contains的支持。升级您的EF版本(然后您的代码将正常运行),或者使用manual expression building之类的东西:

var query = context.studentTable.Where(
    BuildContainsExpression<Student, int>(s => s.StudentID, studentIDs));