My.RolePermission.Model/SearchParam/PredicateBuilder.cs

(完整代码) 1KB

/****************************************************************************
 *Copyright (c) 2016 All Rights Reserved.
 *CLR版本: 4.0.30319.42000
 *机器名称:DESKTOP-V7CFIC3
 *公司名称:
 *命名空间:My.RolePermission.Model.SearchParam
 *文件名:  PredicateBuilder
 *版本号:  V1.0.0.0
 *唯一标识:c209f252-1b42-4e68-9e1f-07d1aeb6599e
 *当前的用户域:DESKTOP-V7CFIC3
 *创建人:  zouqi
 *电子邮箱:zouyujie@126.com
 *创建时间:2016/6/25 9:22:52

 *描述:
 *
 *=====================================================================
 *修改标记
 *修改时间:2016/6/25 9:22:52
 *修改人: zouqi
 *版本号: V1.0.0.0
 *描述:
 *
 *****************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace My.RolePermission.Model.SearchParam
{
    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>> 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.Or(expr1.Body, invokedExpr), expr1.Parameters);
        }

        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.And(expr1.Body, invokedExpr), expr1.Parameters);
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。