public Expression<Func<Job, bool>> ToLambda()
        {
            Type type = typeof (Job);
            ParameterExpression parameterExpression = Expression.Parameter(type, "job");

            Expression body = Expression.Equal(Expression.Property(parameterExpression, "MemberId"), Expression.Constant(MemberId));

            if (Key.IsNotNullAndWhiteSpace())
            {
                MemberExpression keyMember = Expression.Property(parameterExpression, "JobName");
                Expression value = Expression.Constant(Key);
                MethodCallExpression keyExpression = Expression.Call(keyMember,
                                                                          typeof (string).GetMethod("Contains"),
                                                                          value);
                body = Expression.And(body, keyExpression);
            }

            if(IsOpen.HasValue)
            {
                MemberExpression isOpenExpression = Expression.Property(parameterExpression, "IsOpen");
                Expression openExpression = Expression.Equal(isOpenExpression, Expression.Constant(IsOpen));
                body = Expression.And(body, openExpression);
            }

            return Expression.Lambda<Func<Job, bool>>(body, parameterExpression);
        }

相关文章:

  • 2021-06-06
  • 2021-10-25
  • 2021-05-22
  • 2021-10-26
  • 2021-10-29
  • 2022-01-12
  • 2021-11-01
猜你喜欢
  • 2022-02-24
  • 2021-11-03
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2021-08-01
  • 2022-12-23
相关资源
相似解决方案