예제 #1
0
 protected override Expression VisitConstant(ConstantExpression c)
 {
     if (this.IsQuery(c))
     {
         IQueryable q = (IQueryable)c.Value;
         ITable     t = q as ITable;
         if (t != null)
         {
             MetaType entity = this.mapping.GetMetaType(t.ElementType, t.EntityID, t.EntityType);
             return(this.VisitSequence(this.mapping.CreateProjection(entity)));
         }
         else
         {
             return(RedundantSubqueryRemover.Remove(this.Visit(q.Expression)));
         }
     }
     return(c);
 }
 public static Expression Remove(Expression expression)
 {
     expression = new RedundantSubqueryRemover().Visit(expression);
     expression = SubqueryMerger.Merge(expression);
     return expression;
 }
예제 #3
0
 public static Expression Remove(Expression expression)
 {
     expression = new RedundantSubqueryRemover().Visit(expression);
     expression = SubqueryMerger.Merge(expression);
     return(expression);
 }