Linq.Dynamic.Core 日期时间条件失败
Linq.Dynamic.Core failing for DateTime condition
我正在尝试使用 Linq.Dynamic.Core 构建动态查询。所以这个想法是查询需要根据各种条件执行,如 Contains、AND、OR。所有这些都工作正常但大于和小于日期值失败。
我已经尝试了几个版本,但似乎都不起作用。以下是主要查询。
var result = context.AllResults.Where(where).Distinct().AsEnumerable();
所以 'where' 是我要构建的通用查询。下面是以前工作但现在它抛出错误“运算符'<'与操作数类型不兼容'DateTime'和'Int32'”
var dtValue = (DateTime)value;
where = String.Format("{0} <= DateTime({1},{2},{3},{4},{5},{6})", field, dtValue.Year, dtValue.Month, dtValue.Day, dtValue.Hour, dtValue.Minute, dtValue.Second);
我尝试了另一种方法,但它似乎不起作用并且引发了同样的问题。
var dtValue = (DateTime)value;
where = String.Format("{0} <= {1}",field, DateTime.Parse(dtValue.ToShortDateString()));
我查看了各种解决方案,但 none 似乎可行。我究竟做错了什么?这也是一个更大查询的简化版本,因此直接使用值而不是主查询中的 where 是行不通的。
我遇到了类似的问题,这就是我解决问题的方法。我从Linq.Dynamic.Coregithub site.
得到的解决方案
所以基本上你必须添加具有 Column 属性的实体 class(table 列)并指定 TypeName:
[Column(TypeName = "datetime")]
public DateTime MyDateTimeField { get; set; }
这需要应用到您要与之比较值的日期列。
我正在尝试使用 Linq.Dynamic.Core 构建动态查询。所以这个想法是查询需要根据各种条件执行,如 Contains、AND、OR。所有这些都工作正常但大于和小于日期值失败。
我已经尝试了几个版本,但似乎都不起作用。以下是主要查询。
var result = context.AllResults.Where(where).Distinct().AsEnumerable();
所以 'where' 是我要构建的通用查询。下面是以前工作但现在它抛出错误“运算符'<'与操作数类型不兼容'DateTime'和'Int32'”
var dtValue = (DateTime)value;
where = String.Format("{0} <= DateTime({1},{2},{3},{4},{5},{6})", field, dtValue.Year, dtValue.Month, dtValue.Day, dtValue.Hour, dtValue.Minute, dtValue.Second);
我尝试了另一种方法,但它似乎不起作用并且引发了同样的问题。
var dtValue = (DateTime)value;
where = String.Format("{0} <= {1}",field, DateTime.Parse(dtValue.ToShortDateString()));
我查看了各种解决方案,但 none 似乎可行。我究竟做错了什么?这也是一个更大查询的简化版本,因此直接使用值而不是主查询中的 where 是行不通的。
我遇到了类似的问题,这就是我解决问题的方法。我从Linq.Dynamic.Coregithub site.
得到的解决方案所以基本上你必须添加具有 Column 属性的实体 class(table 列)并指定 TypeName:
[Column(TypeName = "datetime")]
public DateTime MyDateTimeField { get; set; }
这需要应用到您要与之比较值的日期列。