예제 #1
0
        private static Expression <Func <T, bool> > AddDocTypePredicate(Expression <Func <T, bool> > predicate)
        {
            var type              = typeof(T);
            var docTypeField      = type.GetProperty("_docType");
            var memberExp         = Expression.Property(predicate.Parameters[0], docTypeField);
            var secondPredicate   = LambdaExpression.Equal(memberExp, Expression.Constant(type.Name));
            var and               = LambdaExpression.AndAlso(predicate.Body, secondPredicate);
            var extendedPredicate = Expression.Lambda <Func <T, bool> >(and, predicate.Parameters);

            return(extendedPredicate);
        }