linq和lamda表达式中添加时间判断时解决方案

在工作中遇到个问题,在使用lamda查询数据的时候,需要添加一个时间判断, DateTime.AddDays(3) > e.ExpirationDate

例如:list = Context.VoucherUserSignPLView.Where(e => e.IsUse == isUse && e.ExpirationDate >= DateTime.Now && DateTime.AddDays(days) > e.ExpirationDate).ToList();

当然,这段代码能够完全通过编译,但问题来了,当运行到该句时,却报错了

--->其他信息: LINQ to Entities 不识别方法“System.DateTime AddDays(Double)”,因此该方法无法转换为存储表达式。

问题很明显,不识别AddDays方法,只能换个东东,于是 EntityFunctions 类 登场了, 实体方法s,一目了然。

msdn 上面的解释 :提供在 LINQ to Entities 查询中,公开概念模型规范函数的公共语言运行时 (CLR) 方法。

https://msdn.microsoft.com/zh-cn/library/vstudio/system.data.objects.entityfunctions(v=vs.100).aspx

于是选用了自己需要的方法 EntityFunctions.DiffDays。

使用后:list = Context.VoucherUserSignPLView.Where(e => e.IsUse == isUse && e.ExpirationDate >= DateTime.Now && System.Data.Objects.EntityFunctions.DiffDays(DateTime.Now, e.ExpirationDate) <= days).ToList();

运行无异常。

时间: 2024-11-06 18:56:30

linq和lamda表达式中添加时间判断时解决方案的相关文章

worklight 中添加时间控件

在我们使用worklight开发的过程中,由于文档的不开源和插件的缺少,总是自己琢磨很多东东,更有胜者 需要调用源代码实现某些不易实现的功能.在这里把实现的功能代码贴出来,如有不足之处还望指正! 实现的步骤就不多说了,上篇中已经解说 实现日期插件 1 public class DatePickerPlugin extends CordovaPlugin { 2 3 private static final CordovaActivity ctx = null; 4 private static

向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法

转自原文 向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法 写了一个小程序,从一个列表中读取坐标串,每个坐标串生成一个IPolygon,然后将这些Polygon添加到一个SDE图层中, 向SDE中添加要素的初始代码类似下面: IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOper

c# Linq及Lamda表达式应用经验之 GroupBy 分组

本文转载自:http://www.cnblogs.com/han1982/p/4138163.html 示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Name 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.DataSetExtensions 代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } List

(转)c# Linq及Lamda表达式应用经验之 GroupBy 分组

本文转载自:http://www.cnblogs.com/han1982/p/4138163.html 示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Nam 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.DataSetExtensions 代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } List&

linq 在查询表达式中处理异常

在查询表达式的上下文中可以调用任何方法. 但是,我们建议避免在查询表达式中调用任何会产生副作用(如修改数据源内容或引发异常)的方法. 此示例演示在查询表达式中调用方法时如何避免引发异常,而不违反有关异常处理的常规 .NET Framework 指南. 这些指南阐明,当你理解在给定上下文中为何会引发异常时,捕获到该特定异常是可以接受的. 有关详细信息,请参阅异常的最佳做法. 最后的示例演示了在执行查询期间必须引发异常时,该如何处理这种情况. 示例 在某些情况下,针对由查询内部引发的异常的最佳措施可

在IntelliJ IDEA中添加框架支持时找不到Hibernate的解决办法

问题描述 第一次在Add Frameworks support界面中添加hibernate支持的时候,异常中断,导致没有成功添加. 第二次进入Add Frameworks support窗口时,发现找不到hibernate. 解决办法 打开项目根目录下的spring-mvc-crud.iml文件,搜索hibernate找到这段代码并删除,然后重新添加框架支持即可选择hibernate. <facet type="hibernate" name="Hibernate&qu

linq 在查询表达式中处理 null 值

此示例显示如何在源集合中处理可能的 null 值. IEnumerable<T> 等对象集合可包含值为 null 的元素. 如果源集合为 null 或包含值为 null 的元素,并且查询不处理 null 值,则在执行查询时将引发 NullReferenceException. 可采用防御方式进行编码,以避免空引用异常,如以下示例所示: var query1 = from c in categories where c != null join p in products on c.ID equ

mybatis中添加时间字符串条件

<if test="operatorDateStart != null and operatorDateStart !='' " >operator_date >= #{operatorDateStart,jdbcType=VARCHAR}</if><if test="operatorDateEnd != null and operatorDateEnd !='' " ><![CDATA[and operator_da

MYSQL中添加时间

1.在创建新记录和修改现有记录的时候都对这个数据列刷新:TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 2.在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它:TIMESTAMP DEFAULT CURRENT_TIMESTAMP 3.在创建新记录的时候把这个字段设置为0,以后修改时刷新它:TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 4.在创建新记录的时候把这个字段设