当前位置: 移动技术网 > IT编程>开发语言>.net > PredicateBuilder

PredicateBuilder

2018年11月14日  | 移动技术网IT编程  | 我要评论

草莓恋爱日记,gt国际时时彩,理财周报电子版

using system;
using system.linq;
using system.linq.expressions;

namespace oyang.tool
{
    public static class predicatebuilder
    {
        public static expression<func<t, bool>> true<t>() { return f => true; }
        public static expression<func<t, bool>> false<t>() { return f => false; }
        
        public static expression<func<t, bool>> and<t>(this expression<func<t, bool>> expr1, expression<func<t, bool>> expr2)
        {
            var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>());
            return expression.lambda<func<t, bool>>
                  (expression.andalso(expr1.body, invokedexpr), expr1.parameters);
        }

        public static expression<func<t, bool>> or<t>(this expression<func<t, bool>> expr1, expression<func<t, bool>> expr2)
        {
            var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>());
            return expression.lambda<func<t, bool>>
                  (expression.orelse(expr1.body, invokedexpr), expr1.parameters);
        }

        public static expression<func<t, bool>> and<t>(this expression<func<t, bool>> expr1, func<expression<func<t, bool>>> func)
        {
            expression<func<t, bool>> expr2 = func();
            var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>());
            return expression.lambda<func<t, bool>>
                  (expression.andalso(expr1.body, invokedexpr), expr1.parameters);
        }

        public static expression<func<t, bool>> or<t>(this expression<func<t, bool>> expr1, func<expression<func<t, bool>>> func)
        {
            expression<func<t, bool>> expr2 = func();
            var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>());
            return expression.lambda<func<t, bool>>
                  (expression.orelse(expr1.body, invokedexpr), expr1.parameters);
        }
    }
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网