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

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;

我该如何使用学生ID列表过滤查询?

请查看我的修改后的代码,我已经修改了studentIDs的源。 - User2012384
2
你使用的是哪个版本的Entity Framework? - takemyoxygen
你确定 studentIDs 的类型是 List<int> 吗? - Sergey Berezovskiy
@user2191496,升级到EF4或EF5可能吗? - Sergey Berezovskiy
1个回答

6

由于EF4中增加了对Contains的支持,因此在您的EF版本中无法使用Contains。请升级您的EF版本(然后您的代码将可以正常工作),或者使用类似手动表达式构建等其他方法:

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

1
有一个方法可以将你想要回头查看的答案加入书签会很有用。 - Water Cooler v2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接