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
,并且不处理复杂的表达式。你在用什么图书馆?