我想翻译这样的查询:
SELECT * FROM Product WHERE Product.ID in (SELECT Product.ID FROM other_table)
进入LINQ。我读到了使用contains方法,但问题是它为每个传入的id生成了很多参数,如下所示:
WHERE [Product].[ID] IN (@p0, @p1)
如果我有一个bilion参数,我想传递给我的查询,服务器将无法执行这么长的查询。是否可以创建LINQ查询,使生成的SQL接近原始的?
谢谢, Romek
答案 0 :(得分:1)
如果您使用大型表,那么IN
语句是个坏主意,它们非常慢。你应该做joins。
无论如何,这就是你想要的;
using(dbDataContext db = new dbDataContext())
{
var result = from p in db.products
join o in db.other_table
on p.ID equals o.ID
select p;
}
答案 1 :(得分:0)
你应该可以使用join。
other_Table.Join(product, ot => ot.Id, pd => pd.Id, (pd, ot) => pd);