我在内存中有一组ID,我想只从匹配这些ID的数据库中获取行。
在SQL中,我可以编写类似SELECT * FROM mytable WHERE id IN (1,3,5,10)
的查询,也可以在表之间进行连接。
我的问题是EF无法构建一个查询,我将我的EF数据加入我的本地数组或列表。
(我正在使用EF4.1,但我猜测问题/解决方案在旧版本以及Linq-to-SQL中会类似。)
答案 0 :(得分:4)
您可以将Contains()
与您的ID集myIDs
一起使用来生成等效的WHERE id IN ..
查询:
var results = context.mytable.Where(x => myIds.Contains(x.Id));