例如,我有一些数据源(可能是数据库),需要从中提取过去一个月的所有记录。我使用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提供程序中运行更快,但是找不到任何证据或解释(或者反驳)。所以,哪种方法实际上更好用以获得更好的性能,为什么?