void VisitX(SqlCteTable table) { Visit(table.All); foreach (var field in table.Fields) { Visit(field); } if (table.TableArguments != null) { foreach (var a in table.TableArguments) { Visit(a); } } // Visit(table.CTE); }
void Visit2X(SqlCteTable table) { Visit2(table.All); foreach (var field in table.Fields.Values) { Visit2(field); } if (table.TableArguments != null) { foreach (var a in table.TableArguments) { Visit2(a); } } // do not visit it may fail by stack overflow //Visit2(table.CTE); }