LINQ to EF - 模拟SQL“IN”子句

时间:2011-08-30 22:18:21

标签: .net linq

我在这里阅读了一些关于从LINQ到EF生成合适的SQL的好建议。下面的LINQ查询是我想出的。 (我根据现在正在扩充的现有代码制定了以下LINQ查询,以及来自此论坛的提示。)

捕获的结果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();
        }

1 个答案:

答案 0 :(得分:5)

无法向Linq查询提供程序提供有关如何翻译Linq语句的“提示” - 这完全取决于提供程序。在这种情况下,提供者可能出于某种原因(即性能)决定特定的映射(WHERE .. IN vs OR),但两者都逻辑等效。

话虽如此,两个查询实际上都会产生相同的执行计划(至少对于SQL服务器而言),因此性能方面不应该有所作为。