Linq Lambda x desempenho da sintaxe de consulta
eu vi hoje uma sintaxe de consulta linq no meu projeto, que estava contandoList
itens em condições específicas desta maneira:
int temp = (from A in pTasks
where A.StatusID == (int)BusinessRule.TaskStatus.Pending
select A).ToList().Count();
Eu pensei em refatorá-lo, escrevendo-o como usandoCount()
para tornar mais legível e o que eu pensei que seria desempenho também é bom, então eu escrevi:
int UnassignedCount = pTasks.Count(x => x.StatusID == (int)BusinessRule.TaskStatus.Pending);
Mas quando eu chequei colocandoStopWatch
o tempo decorrido pela expressão lambda é sempre mais do que a sinaxia da consulta:
Stopwatch s = new Stopwatch();
s.Start();
int UnassignedCount = pTasks.Count(x => x.StatusID == (int)BusinessRule.TaskStatus.Pending);
s.Stop();
Stopwatch s2 = new Stopwatch();
s2.Start();
int temp = (from A in pTasks
where A.StatusID == (int)BusinessRule.TaskStatus.Pending
select A).ToList().Count();
s2.Stop();
Alguém pode explicar por que é assim?