C# Linq与lambda表达式:如何从sql中执行IN语句?

C# Linq与lambda表达式:如何从sql中执行IN语句?,c#,linq,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 使用Contains方法: Controller.Project.Where(p => id_funds.Contain

在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

使用
Contains
方法:

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

不要认为它适用于您的问题,因为它似乎链接到db表,但是…

请注意,如果id_funds是一个对象(即一个简单数组或列表等),而不是数据库中的某个对象,并且您没有使用Linq To对象,您可能会遇到这样的问题,因为我认为在V4.0支持它之前,Linq To Entities不支持它(请参阅解决方法),如果
id_funds
是一个非常大的列表,Linq To SQL就会出现问题(大约2000多个项目)。

从问题看,基金也是一个表,因此应该没有任何问题。id\u funds是int,因此我们不能将Contains与此变量一起使用它将是
Controller.funds.any(f=>f.id=p.id)
然后我猜好了,对不起,我确实列出了id\u funds=Controller.funds.Select(…)现在工作得很好。谢谢不要将资金Id放入本地列表中,您可以使用单个查询在DB上完成这项工作。