我正在使用“表达式”构建器构建查询。但是,每次我添加以下表达式时,我都会收到错误:
Expression.NotEqual("TableProperty", constant)
错误: “字符集不被识别为有效的日期时间。索引0以未知单词开头”。
当我运行类似的查询时,除了我使用Expression.Equals之外,它不会返回此错误。
进一步检查错误告诉我DateTime.Parse()发生了问题。因此,似乎查询构建器的当前结构对于可空类型的此运算符是不够的。
有没有人知道这个问题的好方法?
答案 0 :(得分:0)
我摆弄了一下,让它像这样工作(我认为这清楚地说明了我的要求)
if (member.Type.IsGenericType && member.Type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
var isNullCheck = Expression.Equal(member, Expression.Convert(Expression.Constant(null), member.Type));
return Expression.Or(isNullCheck, Expression.NotEqual(Expression.Property(member, "HasValue"), constant));
}
return Expression.NotEqual(Expression.Property(member, "HasValue"), constant);
这里的成员变量是指&#34; TableProperty&#34;