Linq Lambda против производительности синтаксиса запросов
я видел сегодня синтаксис запроса linq в моем проекте, который считал отList
предметы по указанному условию так:
int temp = (from A in pTasks
where A.StatusID == (int)BusinessRule.TaskStatus.Pending
select A).ToList().Count();
я думал реорганизовать его, написав его, как с помощьюCount()
чтобы сделать его более читабельным, и я подумал, что это было бы неплохо для производительности, поэтому я написал:
int UnassignedCount = pTasks.Count(x => x.StatusID == (int)BusinessRule.TaskStatus.Pending);
Но когда я проверил, поставивStopWatch
Время, прошедшее с помощью лямбда-выражения, всегда больше, чем запрос synax:
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();
Может кто-нибудь объяснить, почему это так?