ToUpper()inExpression.Call下面的代码可以运行,但是我想引入一个ToUpper()varpredicate=Expression.Lambda(Expression.Call(Expression.PropertyOrField(parameter,"FirstName"),"Contains",null,Expression.Constant("myvalue".ToUpper())),parameter);结果是:{Param_0=>Param_0.FirstName.Contains("MYVALUE")}但我想要这个:{Param_0=>Param_0.FirstName.ToUpper().Contains("MYVALUE")}我怎样才能改变这个?只需添加一个Expression.Call:varpredicate=Expression.Lambda>(Expression.Call(Expression.Call(//Thenreportyourself:Param_0=>Param_0.FirstName.ToUpper().Contains("MYVALUE")编辑:OKYes,我误解了这个问题。问题是您直接在调用FirstName属性的结果上调用Contains。您需要先在属性上调用ToUpper,例如varfirstName=Expression.PropertyOrField(parameter,"FirstName");varfirstNameUpper=Expression.Call(firstName,"ToUpper",null);vartarget=Expression.Constant("myvalue".ToUpper());varcontains=Expression.Call(firstNameToUpper,"Contains",null,target);varlambda=Expression.Lambda>(包含,参数);请注意,这不是“文化安全”——使用不区分大小写的比较会更安全。这个问题展示了一种使用IndexOf的方法,但LINQ提供程序可能不支持它(然后我不知道你在用这个表达式树做什么)。以上就是C#学习教程:Expression.Call中的ToUpper()分享的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注---本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: