使用表达式树的动态 Linq 2 Sql 引发异常 "System.String 和 System.String 之间未定义二元运算符 LessThan"。

3

我正在尝试使用表达式树编写动态的Linq 2 Sql查询,但是我遇到了一个异常,告诉我System.StringSystem.String类型没有定义小于号和大于号运算符,这让我感到奇怪,这是真的吗?还是我做错了什么?

Expression<Func<SomeDataContextType, string>> codeSelectorExpresion = 
    x => x.CodeColumn;
var row = Expression.Parameter(typeof(SomeDataContextType), "row");
var expression = 
   Expression.GreaterThan(
       Expression.Invoke(codeSelectorExpression, row),
       Expression.Constant("someString", typeof(string)));
//I'm trying to build something like SomeDataContextType.CodeColumn > "someString"
1个回答

4

很抱歉,我努力尝试了一段时间后意识到在字符串中使用的 >< 运算符是通过调用 string.CompareTo 实现的,所以我更新了代码使用 string.CompareTo 方法,并且它起作用了。不过还是谢谢你的帮助。

var expression =
    Expression.GreaterThan(
       Expression.Call(
            Expression.Invoke(codeSelectorExpression, row), 
            typeof(string).GetMethod("CompareTo", new[] {typeof(string)}),
            Expression.Constant("someString")),
       Expression.Constant(0, typeof(int)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接