Dot*_*row 12 linq linq-to-entities entity-framework
select col1,col2,col3 from table1 
where(DATEDIFF(mm, tblAccount.[State Change Date], GETDATE()) <= 4
我想将此SQL查询转换为LINQ.但我不知道LINQ中的任何DateDiff替代品.你能建议我吗?
暂时不考虑原始问题,在查询中使用:
where(DATEDIFF(mm, tblAccount.[State Change Date], GETDATE()) <= 4
此查询将始终导致全表扫描,因为您将函数调用的结果与常量进行比较.如果先计算日期,然后将列值与计算值进行比较会更好,这将允许SQL使用索引查找结果,而不必评估表中的每个记录.
看起来您正在尝试在过去4个月内检索任何内容,因此在您的应用程序代码中,尝试计算您可以先与之进行比较的日期,并将该值传递给您的Linq2Entities表达式:
DateTime earliestDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-4);
var results = from t in context.table1
              where t.col3 >= earliestDate
              select t;
| 归档时间: | 
 | 
| 查看次数: | 9186 次 | 
| 最近记录: |