无法在Dynamic Linq中比较DateTime

时间:2014-11-21 13:25:55

标签: c# linq datetime dynamic

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

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

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

2 个答案:

答案 0 :(得分:2)

请参阅此link

根据该链接的信息

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

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

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

Credits

答案 1 :(得分:1)

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

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