11

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操作员不工作。有人有建议吗?

4

1 回答 1

24

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

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

要创建这样的表达式,您可以使用Expression.Not(callExpression).

于 2012-09-17T10:22:51.593 回答