Dynamic Linq 2 Sql с использованием деревьев выражений, вызывающих исключение Двоичный оператор LessThan не определен для System.String и System.String

Я пытаюсь написать динамический запрос Linq 2 Sql с использованием деревьев выражений, но получаю исключение, говорящее мне, что операторы LessThan и GreaterThan не определены для System.String и System.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"

person albertein    schedule 14.01.2010    source источник


Ответы (1)


Извините, после некоторой борьбы я понял, что операторы > и < в строках реализованы с вызовом 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)));
person albertein    schedule 14.01.2010