LINQ优化问题

本文关键字:问题 优化 LINQ | 更新日期: 2023-09-27 17:58:23

如果我有以下代码,编译器是在实例化每个结果,还是只计算表中有多少对应的记录就足够明智?如果没有,它可能会迫使我对较大的查询使用不同的策略。

from c in context.RendezVous
where c.RepID == repID &&
    c.DateHeureRV != null &&
    c.DateHeureRV.Value.Date == date.Date
select c).Count();

谢谢!

LINQ优化问题

这取决于context的类型。

如果这是一个实体框架或Linq-to-SQL查询,并且contextIQueryable<T>,则该查询将在服务器上转换为SQL查询,该查询仅将计数返回为单个整数。

如果这是一个内存中的集合(即:IEnumerable<T>),则每个项都会按顺序迭代(Linq到Objects)并计数。

我怀疑前者是真的,因为您提到了"表",并且没有使用LINQ到数据集的扩展方法。那样的话,你会保持高效。

这将执行(或多或少):

select count(*)
from rendezvous
where repid='...' and dateheurerv is not null and dateheurerv='...'

Linq不会给查询增加实际开销,计数将在服务器端处理。

这将使用您列出的三个WHERE条件执行SQL查询,并返回匹配行的计数,它将只实现实际计数,而不是每一行-如果这是您的问题的话。