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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |