【问题标题】:Unable to compare DateTime in Dynamic Linq无法比较 Dynamic Linq 中的 DateTime
【发布时间】:2014-11-21 13:25:54
【问题描述】:

我正在使用动态 linq 在运行时构建查询。我正在准备以下命令

var temp = list
    .AsQueryable()
    .Where("Date<DateTime(2014,10,22,21,05,56)")
    .Select("it");
return temp.Cast<T>().ToList();

条件未正确执行,我得到一组错误的结果。我的过滤条件是动态的,我只会在运行时生成它。你能帮我解决这个问题吗?在动态 linq 中是否可以进行时分秒比较?

【问题讨论】:

  • Date &lt; new DateTime... ?
  • @krillgar &lt; 这里代表“小于”

标签: c# linq datetime dynamic


【解决方案1】:

请参考link

根据该链接中的信息

请注意,构造函数调用不以 new 为前缀。以下示例使用构造函数调用为特定的年、月和日创建 DateTime 实例:

orders.Where("OrderDate >= DateTime(2007, 1, 1)");

我能看到的唯一区别是它只接受 3 个参数。作者可能没有实现重载版本。请尝试使用三个参数。

Credits

【讨论】:

  • 我的问题是我不能传递参数。我需要自己构建日期时间。下载源代码后,我找不到他们采用 3 个参数的方法
【解决方案2】:

当我使用NuGet package 时,我可以执行你的谓词。但无论如何我都会使用参数:

var temp = list
    .AsQueryable()
    .Where("Date < @0", new DateTime(2014,10,22,21,05,56))
    .Select("it");
return temp.Cast<T>().ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多