2011-08-30 98 views
2

我在這裏閱讀了一些關於如何從LINQ生成體面的SQL的重要提示。下面的LINQ查詢就是我想到的。 (我根據現在增加的現有代碼制定了以下LINQ查詢,以及來自此論壇的提示。)LINQ to EF - 模擬SQL「IN」子句

捕獲的結果SQL顯示WHERE子句使用一堆連續的OR,而不是IN 。有沒有辦法強制這個翻譯到IN?

 string[] circuits = circuitIDList.ToArray(); 
     using (var ctx = new MyEntities()) 
     { 
      var q = from n in ctx.v_myview 
        where circuits.Contains(n.circuitid) 
        select n; 

      string tSQL = q.ToTraceString(); 

      return q.ToList(); 
     } 

回答

5

沒有辦法向Linq查詢提供程序提供「提示」,說明您希望如何翻譯Linq語句 - 這完全取決於提供程序。在這種情況下,提供者可能因爲某種原因(即性能)決定特定的映射(WHERE .. IN或OR),但兩者都是邏輯上等效的。儘管如此,這兩個查詢實際上確實會產生相同的執行計劃(至少對於SQL服務器而言),因此性能方面應該沒有什麼不同。

+0

+1相同的執行計劃。 –