Вызовите ToUpper в дереве выражений LINQ

Я хотел бы создать этот запрос LINQ:

    Result = Result.Where(Function(Row) Convert.ToString(Row(0)).ToUpper = "TEST")

У меня уже есть этот запрос:

Result = Result.Where(Function(Row) Convert.ToString(Row(0)) = "TEST")  

с этим кодом:

expr = Expression.Call(whereMethod, Result.AsQueryable.Expression,
       Expression.Lambda(Expression.Equal(Expression.Call(convertMethod, Expression.ArrayAccess(rowParameter, Expression.Constant(index))),
       Expression.Constant(constant)), rowParameter))

convertMethod представляет собой Convert.ToString, index имеет значение 0, и constant имеет значение "ТЕСТ".

Теперь я хотел бы добавить к этому выражению метод ToUpper.

Я объявил это:

convertMethod_toupper = GetType(String).GetMethod("ToUpper", New Type() {GetType(Object)})

И я нашел это: ToUpper в вызове Expression

Я должен также вызвать метод ToUpper после Convert.ToString(Row(0)) с вызовом Expression.Call еще раз. Но как?

Благодарю.

РЕДАКТИРОВАТЬ: в то же время я понял, что это тоже возвращает ноль:

convertMethod_toupper = GetType(String).GetMethod("ToUpper", New Type() {GetType(Object)})

Что не так с этим?

Если это не должно быть null, я думаю, это должно работать:

expr = Expression.Call(whereMethod, Result.AsQueryable.Expression,
       Expression.Lambda(Expression.Equal(Expression.Call(Expression.Call(convertMethod, Expression.ArrayAccess(rowParameter, Expression.Constant(index))), convertMethod_toupper),
       Expression.Constant(constant)), rowParameter))

EDIT2: я понял.

convertMethod_toupper = GetType(String).GetMethod("ToUpper", System.Type.EmptyTypes)

и вышеприведенное выражение (в edit1) работает.

0 ответов

Другие вопросы по тегам