linq到sql在哪里

时间:2011-07-06 16:04:25

标签: linq-to-sql

我想翻译这样的查询:

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

2 个答案:

答案 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);