Вызовите 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) работает.