2011-08-30 50 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相同的执行计划。 –