c# – “不包含”动态lambda表达式

前端之家收集整理的这篇文章主要介绍了c# – “不包含”动态lambda表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
下面的代码执行“包含”表达式:
private static Expression<Func<T,bool>> Contains<T>(string property,string value)
{
    var obj = Expression.Parameter(typeof(T),"obj");
    var objProperty = Expression.PropertyOrField(obj,property);
    var contains = Expression.Call(objProperty,"Contains",null,Expression.Constant(value,typeof(string)));
    var lambda = Expression.Lambda<Func<T,bool>>(contains,obj);
    return lambda;
}

我对表达式不是很熟悉,我不知道如何将否定放入表达式函数中,并且在“Expression”类中找不到任何合适的方法.有没有类似的方法动态创建“不包含”表达式?

解决方法

“不包含”表达式与“包含”表达式完全相同 – 但用 unary negation expression包装.所以基本上你想要:
// Code as before
var doesNotContain = Expression.Not(contains);
return Expression.Lambda<Func<T,bool>>(doesNotContain,obj);

猜你在找的C#相关文章