Lambda表达式NotContains运算符是否存在?

时间:2012-09-17 10:13:26

标签: c# lambda

我可以使用此代码生成Contains运算符的Lambda表达式。

表达式

Company => Company.Name.Contains("test1")

源代码

var method = typeof(string).GetMethod("Contains", new[] { typeof(string) }); 
var startsWithDishExpr = Expression.Call(argLeft, method, argRight);

它适用于Contains运营商。 如何修改代码以适用于NotContains运算符。

源代码

var method = typeof(string).GetMethod("NotContains", new[] { typeof(string) }); 
var startsWithDishExpr = Expression.Call(argLeft, method, argRight);

NotContains运营商无法正常工作。有人有建议吗?

1 个答案:

答案 0 :(得分:18)

没有string.NotContains方法,因此创建对名为NotContains的方法的调用不起作用。

一个简单的解决方案是将not运算符与Contains方法结合使用。就像通常你写的是!x.Contains(y)而不是x.NotContains(y)

要创建此类表达式,您可以使用Expression.Not(callExpression)