我在这里阅读了一些关于从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();
}
答案 0 :(得分:5)
无法向Linq查询提供程序提供有关如何翻译Linq语句的“提示” - 这完全取决于提供程序。在这种情况下,提供者可能出于某种原因(即性能)决定特定的映射(WHERE .. IN vs OR),但两者都逻辑等效。
话虽如此,两个查询实际上都会产生相同的执行计划(至少对于SQL服务器而言),因此性能方面不应该有所作为。