Linq 如何让ToLower在表达式中工作?
我有以下代码行:Linq 如何让ToLower在表达式中工作?,linq,expression,tolower,Linq,Expression,Tolower,我有以下代码行: protectedexpressionname=x=>x.Name==“smith” 当我添加.ToLower() protectedexpressionname=x=>x.Name.ToLower()=“smith” 为了尝试概括查询,我得到了一个错误 System.Reflection.TargetException:“非静态方法需要目标。” 是否不能以这种方式使用 System.Reflection.TargetException:“非静态方法需要 目标。” 通常情况下,
protectedexpressionname=x=>x.Name==“smith”代码>
当我添加.ToLower()
protectedexpressionname=x=>x.Name.ToLower()=“smith”代码>
为了尝试概括查询,我得到了一个错误
System.Reflection.TargetException:“非静态方法需要目标。”
是否不能以这种方式使用
System.Reflection.TargetException:“非静态方法需要
目标。”
通常情况下,当目标为null
时会发生这种情况,因此您需要像下面那样首先检查它
x => x != null && x.Name != null && x.Name.ToLower() == "smith"
不幸的是,这对我不起作用。。。相同的错误。是否添加了更多条件x!=空
当我编辑我的问题时?我们可以将其简化为x=>x?.Name?.ToLower()==“smith”
是的,如果OP使用的是C#6功能–空条件
您如何使用Name
?什么是谓词
?Name
的定义中不涉及反射,因此使用它的库或系统必须尝试解析ExpressionLambda
,并且不处理复杂的表达式。你在用什么图书馆?