Например, у меня есть какой-то источник данных (возможно, база данных), из которого мне нужно извлечь все записи за последний месяц. Я использую LINQ. Есть два возможных способа добиться этого:
Во-первых:
var res = from rec in _records
where rec.RequestDateTime.Date.Year == date.Year &&
rec.RequestDateTime.Date.Month == date.Month
select rec;
Секунда (с использованием прямого сравнения дат):
var year = date.Year;
var month = date.Month;
var monthStart = new DateTime(year, month, 1);
var monthEnd = new DateTime(year, month, DateTime.DaysInMonth(year, month));
var res = from rec in _records
where rec.RequestDateTime.Date >= monthStart &&
rec.RequestDateTime.Date <= monthEnd
select rec;
Я слышал, что второй код работает быстрее для большинства поставщиков LINQ, но не может найти никаких доказательств или объяснений (или опровержений). Итак, какой способ лучше использовать для повышения производительности и почему?