我想使用LinqToSQL生成一個可能包含很多項目的IN子句。我原來的代碼是這樣的:LinqToSQL在條款
context.Employees.Where(p => EmployeeIDs.Contains(p.EmployeeID));
從而結束了每個員工的ID作爲SQL參數生成的條款。問題是如果您超過2100個參數,則會引發異常。我已經在我的應用程序的其他地方通過執行多個查詢併合並結果來解決這個問題。這在簡單的情況下可以正常工作,但我現在正在做一些更復雜的事情,我認爲這不是最好的解決方案。
無論如何,包含產生類似
EmployeesID IN (@p0, @p1, @p2)
但是,有沒有辦法說服它這樣做?
EmployeesID IN (23, 582, 3948)
我開始下滑使用動態查詢示例的路徑,但後來意識到,這似乎是隻寫動態LINQ代碼,而不是動態SQL。然後我發現了ExecuteQuery,但我不想手動構建我的整個查詢字符串,只是我想要查詢的特定部分。
更具體地講,我想是這樣的:
context.Employees
.Where(p => p.Active == true)
.Where("EmployeeID IN (23, 582, 3948)");
或者preferrably(這是否會產生中不使用參數):
context.Employees
.Where(p => p.Active == true)
.Where(p => p.In("EmployeeID", EmployeeIDs));
沒有辦法做到這一點?謝謝。
您可以使用「join」而不是嵌套查詢來包含示例的另一個版本。只是一個建議,因爲我發佈了類似於你的東西。 – shaunmartin 2011-01-26 20:39:04