4

下面的异常飞行

LINQ to Entities 无法识别“Boolean Contains(Int32)”方法,并且该方法无法转换为存储表达式。

在尝试执行以下查询时

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

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

4

1 回答 1

6

无法Contains在您的 EF 版本中使用,因为在 EF 4 中添加了对的支持。Contains升级您的 EF 版本(然后您的代码将毫无问题地工作),或使用类似手动表达式构建的东西:

var query = context.studentTable.Where(
    BuildContainsExpression<Student, int>(s => s.StudentID, studentIDs));
于 2013-07-30T07:12:03.933 回答