替代LINQ to SQL中的Any()以获得更好的性能

时间:2014-05-27 14:17:08

标签: linq linq-to-sql

我有一个使用嵌套.Where()动态构建的大型查询。我正在使用Any()但是在性能不佳和一些SQL分析之后,我发现Any()实际上导致了许多往返并选择了相关表的每个记录以进行评估,而不是使用JOIN,例如,这将是很多更好。

这是表格的表示以及正在做的事情,假设表格A,B和C:

A< -B-> ç

假设我正在查询A并且有类似.Where(a => a.B.C.Any(c => c.IsActive))

的内容

尽管使用Any()

,还有更好的选择吗?

1 个答案:

答案 0 :(得分:1)

显然,您并没有真正使用LINQ来远程查询服务器。您似乎正在使用IEnumerable个查询,而不是IQueryable个查询。

通常,显示的查询可以转换为SQL批发。了解为什么使用LINQ对象。这个错误与你有关,而不是与L2S有关。 (这些错误很容易发生,因为只要查看代码就无法轻易发现它们。)

  

尽管使用了Any(),还有更好的选择吗?

不确定为什么认为Any是问题所在。这是一个随机的旁观者。