加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:17:57 所属栏目:百科 来源:网络整理
导读:下面的代码执行“包含”表达式: private static ExpressionFuncT,bool ContainsT(string property,string value){ var obj = Expression.Parameter(typeof(T),"obj"); var objProperty = Expression.PropertyOrField(obj,property); var contains = Express
下面的代码执行“包含”表达式:
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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读