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); }