2011-07-06 60 views
1

我想這樣的翻譯詢問:的LINQ to SQL其中

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

到LINQ。我讀了有關使用含有方法,但問題是,它產生了大量的參數,每個ID傳遞這樣的:

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

如果我有例如一個bilion參數我要傳遞到我的查詢服務器將無法執行如此長的查詢。是否有可能以這樣的方式創建LINQ查詢,以使生成的SQL接近原始?

感謝, Romek

+0

您是否反對使用存儲過程? – Joe

回答

1

如果您正在使用大型數據表,然後IN statments是一個壞主意,他們是非常緩慢的。你應該在做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; 
} 
+0

嗨,謝謝 - 不幸的是我不能使用這種方法。對不起,我不清楚我想達到什麼目的。通常我想從一個表中選擇具有給定ID的產品。 id的列表將來自代碼(由於某些用戶操作而在C#中生成)。我不知道這是否有可能實現。 – Romek

+0

爲什麼會阻止您執行連接?如果您只需要選擇具有特定ID的行,則根本不需要連接,只需選擇它們即可。 –

0

您應該可以使用連接。

other_Table.Join(product, ot => ot.Id, pd => pd.Id, (pd, ot) => pd);