我可以使用此代码生成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
运营商无法正常工作。有人有建议吗?
答案 0 :(得分:18)
没有string.NotContains
方法,因此创建对名为NotContains
的方法的调用不起作用。
一个简单的解决方案是将not
运算符与Contains
方法结合使用。就像通常你写的是!x.Contains(y)
而不是x.NotContains(y)
。
要创建此类表达式,您可以使用Expression.Not(callExpression)
。