首页 > 解决方案 > 使用 Dynamic Linq 按 datetimeoffset 列过滤实体

问题描述

我正在使用 DynamicLinq dll 执行动态 linq,其中我正在发送如下构造的动态过滤器

"CreatedDate=System.DateTimeOffset.Parse(\"2017-11-17 22:07:04.9192538 +00:00\")",

但是,我收到系统不存在的错误。但是,我也尝试了以下但没有运气。

"CreatedDate=(\"2017-11-17 22:07:04.9192538 +00:00\")",

但收到以下消息

运算符 '=' 与操作数类型 'DateTimeOffset' 和 'String' 不兼容(在索引 11 处)

使用动态 linq 和 EF 过滤日期时间偏移列的正确方法是什么?

代码

IQueryable<T> query = Set<T>();

if (!string.IsNullOrEmpty(filter))
    query = Dynamic.DynamicQueryable.Where(query, filter);

标签: c#linqentity-framework-6dynamic-linq

解决方案


如果您将字符串解析为 DateTimeOffset 对象,例如:

var dateTime = DateTimeOffset.Parse("2017-11-17 22:07:04.9192538 +00:00")

然后你可以使用这个:

query.Where("CreatedDate==DateTimeOffset(@0)", dateTime)

推荐阅读