Linq用lambda表达式:如何用sql的IN语句?

时间:2011-12-15 09:09:00

标签: c# linq

在SQL中,我可以使用IN运算符:

select * from project where id IN (select f.id_project from funds)

如何将此语句转换为LINQ?

Controller.Project.Where(p => p.id == id_funds); // I can assign only one id funds

1 个答案:

答案 0 :(得分:2)

使用Contains方法:

Controller.Project.Where(p => id_funds.Contains(p.id));

不要认为它适用于您的问题,因为id_funds链接到数据库表但是......
请注意,如果id_funds是一个对象(即一个简单的数组或列表等),而不是数据库中的某些东西而你没有使用Linq-To-Objects,你可能会遇到这方面的问题,因为我不认为Linq-To- v 4.0之前的实体支持它(请参阅here获取解决方法),如果id_funds是一个非常大的列表(超过大约2000个项目),则Linq-To-SQL会出现问题。