我想创建这个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
的值为" TEST"。
现在,我想在此表达式中添加ToUpper方法。
我宣布了这个:
convertMethod_toupper = GetType(String).GetMethod("ToUpper", New Type() {GetType(Object)}
)
我发现了这个:ToUpper in an Expression call
我还应该在Convert.ToString(Row(0))
之后再次调用Expression.Call调用ToUpper方法。但是如何?
感谢。
编辑:与此同时,我发现,这也会返回null:
convertMethod_toupper = GetType(String).GetMethod("ToUpper", New Type() {GetType(Object)})
这有什么问题?
如果这不应该为空,我想,这应该有效:
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中)有效。