带lambda表达式的Linq:如何从sql中执行IN语句

本文关键字:sql 执行 语句 IN 表达式 lambda Linq | 更新日期: 2023-09-27 18:17:51

在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

带lambda表达式的Linq:如何从sql中执行IN语句

使用Contains方法:

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

不要认为它适用于你的问题,因为它似乎id_funds链接到一个数据库表,但…
请注意,如果id_funds是一个对象(即一个简单的数组或列表等),而不是数据库中的东西,你不使用Linq-To-Objects,你可能会遇到这个问题,因为我不认为Linq-To-Objects在v 4.0之前支持它(见这里的一个解决方案),而Linq-To-SQL有问题,如果id_funds是一个非常大的列表(超过2000项)。