c# - 使用 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);
解决方案
如果您将字符串解析为 DateTimeOffset 对象,例如:
var dateTime = DateTimeOffset.Parse("2017-11-17 22:07:04.9192538 +00:00")
然后你可以使用这个:
query.Where("CreatedDate==DateTimeOffset(@0)", dateTime)
推荐阅读
- assembly - 如何将字符串保存到程序集中的变量中?
- mysql - SQL请求对具有另一列符号函数的列求和
- elasticsearch - ElasticSearch 聚合未显示计数
- google-cloud-platform - 创建谷歌计算实例组给我的 terraform 错误,但已创建
- excel - Excel VBA,如果其他工作表上的相应值显示“创建”,则在相邻单元格中添加“是”
- jquery - 如何摆脱底部的这个空白?
- javascript - Javascript 或 Rails:如何获取 BLE 设备或蓝牙
- javascript - 如何对我的徽标产生影响?
- nav - 停止导航/侧边栏滚动
- javascript - FullCalendar HTML5 Drag & Drop Api