LINQ для SQL, где в - PullRequest
       1

LINQ для SQL, где в

1 голос
/ 06 июля 2011

Я хочу перевести запрос так:

SELECT * FROM Product WHERE Product.ID in (SELECT Product.ID FROM other_table)

в LINQ. Я читал об использовании метода contains, но проблема в том, что он генерирует множество параметров для каждого переданного идентификатора следующим образом:

WHERE [Product].[ID] IN (@p0, @p1)

Если у меня есть, например, один параметр bilion, который я хочу передать в свой запрос, сервер не сможет выполнить такой длинный запрос. Можно ли создать запрос LINQ таким образом, чтобы сгенерированный SQL был близок к оригиналу?

Спасибо, Ромек

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Если вы используете большие таблицы, тогда IN статистика плохая идея, она очень медленная. Вы должны делать присоединения .

В любом случае, вот что вы хотите;

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;
}
0 голосов
/ 06 июля 2011

Вы должны быть в состоянии использовать для этого соединение.

other_Table.Join(product, ot => ot.Id, pd => pd.Id, (pd, ot) => pd);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...