zoukankan      html  css  js  c++  java
  • 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();

    运行无异常。

     

  • 相关阅读:
    PCB工作台
    A/D转换
    gerber文件生成与PCB3D视图
    软考考前冲刺第十四、十五章算法设计与面向对象程序设计
    数据库之范式
    Java第九天
    软考考前冲刺第十三章UML建模
    软考错题合集之16-05-AM
    Java第八天
    Java第七天
  • 原文地址:https://www.cnblogs.com/lc-ant/p/4597355.html
Copyright © 2011-2022 走看看