2017-11-14 6 views
1

"DeclareTableVariableStatement"の後ろに "DeleteStatement"を挿入します。 しかし、私にはわかりません! これは私のサンプルコードです。ScriptDom + DeleteStatement

public override void Visit(StatementList node) 
{ 
    foreach (DeclareTableVariableStatement declareTableVariableStatement in node.Statements.Where(a => a is DeclareTableVariableStatement).ToList()) 
    { 
     BeginEndBlockStatement deleteBeginEndBlockStatement = new BeginEndBlockStatement() 
     { 
      StatementList = new StatementList() 
     }; 

     DeleteStatement deleteStatement = new DeleteStatement() 
     { 
      DeleteSpecification=new DeleteSpecification() 
      { 
       Target= ??? 
      } 
     }; 
     deleteBeginEndBlockStatement.StatementList.Statements.Add(deleteStatement); 
     node.Statements.Insert(node.Statements.IndexOf(declareTableVariableStatement) + 1, deleteBeginEndBlockStatement); 
    } 
    base.Visit(node); 
} 

答えて

0

解決策を見つけました。

public override void Visit(StatementList node) 
{ 
    foreach (DeclareTableVariableStatement declareTableVariableStatement in node.Statements.Where(a => a is DeclareTableVariableStatement).ToList()) 
    { 
     BeginEndBlockStatement deleteBeginEndBlockStatement = new BeginEndBlockStatement() 
     { 
      StatementList = new StatementList() 
     }; 

     DeleteStatement deleteStatement = new DeleteStatement() 
     { 
      DeleteSpecification = new DeleteSpecification() 
      { 
       Target = new VariableTableReference() 
       { 
        Variable = new VariableReference() 
        { 
         Name = declareTableVariableStatement.Body.VariableName.Value 
        } 
       } 
      } 
     }; 

     deleteBeginEndBlockStatement.StatementList.Statements.Add(deleteStatement); 
     node.Statements.Insert(node.Statements.IndexOf(declareTableVariableStatement) + 1, deleteBeginEndBlockStatement); 
    } 
    base.Visit(node); 
} 
関連する問題