public static HashSet <ColumnExpression> Gather(Expression expression) { var visitor = new ReferencedColumnGatherer(); visitor.Visit(expression); return(visitor.columns); }
/// <summary> /// Visits the select. /// </summary> /// <param name="select">The select.</param> /// <returns></returns> protected override Expression VisitSelect(SelectExpression select) { var saveColumns = this.columns; this.columns = ReferencedColumnGatherer.Gather(select).ToLookup(c => c.Alias); var saveLastJoin = this.lastJoin; this.lastJoin = null; var result = base.VisitSelect(select); this.columns = saveColumns; this.lastJoin = saveLastJoin; return(result); }