2013-07-08 62 views
0

我得到:如何使用Rally .NET工具包訪問用戶故事中的任務集合?

未處理的異常:System.Collections.Generic.KeyNotFoundException:給定的 關鍵是不存在的字典。

遍歷用戶故事查詢結果時,並嘗試訪問的故事[「任務」]

foreach (var story in queryStoryResults.Results) 
     { 
      Console.WriteLine("FormattedID: " + story["FormattedID"]); 
      Console.WriteLine("Name: " + story["Name"]); 
      Console.Write("Tasks: " + story["Tasks"]); 

}

回答

1

首先,確保任務將被提取,與任務特定字段一起你想提取,例如州。 接下來,在迭代用戶故事結果的循環內部需要嵌套循環。 以下是代碼示例。它查詢當前迭代中的用戶素材並打印出與查詢結果關聯的FormattedID和任務狀態:

namespace RESTexample_storiesFromIteration 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      //Initialize the REST API 
      RallyRestApi restApi; 
      restApi = new RallyRestApi("[email protected]", "1984", "https://rally1.rallydev.com", "1.43"); 

      //Set our Workspace and Project scopings 
      String workspaceRef = "/workspace/1111"; 
      String projectRef = "/project/2222"; 
      bool projectScopingUp = false; 
      bool projectScopingDown = true; 

      DateTime now = DateTime.Today; 
      String nowString = now.ToString("yyyy-MM-dd"); 

      Request iterationRequest = new Request("Iteration"); 
      iterationRequest.Workspace = workspaceRef; 
      iterationRequest.Project = projectRef; 

      iterationRequest.Fetch = new List<string>() 
       { 
        "Name", 
        "StartDate", 
        "EndDate", 
        "Project", 
        "State" 
       }; 

      String iterationQueryString = "((StartDate <= \"" + nowString + "\") AND (EndDate >= \"" + nowString + "\"))"; 
      iterationRequest.Query = new Query(iterationQueryString); 

      QueryResult queryIterationResults = restApi.Query(iterationRequest); 

      var myIteration = queryIterationResults.Results.First(); 
      var myIterationName = myIteration["Name"]; 
      var myIterationProject = myIteration["Project"]; 
      var myIterationProjectName = myIterationProject["Name"]; 

      Console.WriteLine("Name: " + myIterationName); 
      Console.WriteLine("Project Ref: " + myIterationProjectName); 
      Console.WriteLine("State: " + myIteration["State"]); 

      // Query for Stories 

      Request storyRequest = new Request("hierarchicalrequirement"); 
      storyRequest.Workspace = workspaceRef; 
      storyRequest.Project = projectRef; 
      storyRequest.ProjectScopeUp = projectScopingUp; 
      storyRequest.ProjectScopeDown = projectScopingDown; 
      storyRequest.Fetch = new List<string>() 
       { 
        "Name", 
        "ObjectID", 
        "ScheduleState", 
        "State", 
        "FormattedID", 
        "PlanEstimate", 
        "Iteration", 
        "Tasks" 
       }; 

      storyRequest.Query = new Query("Iteration.Name", Query.Operator.Equals, myIterationName); 
      QueryResult queryStoryResults = restApi.Query(storyRequest); 

      foreach (var s in queryStoryResults.Results) 
      { 
       Console.WriteLine("----------"); 
       Console.WriteLine("FormattedID: " + s["FormattedID"]); 
       Console.WriteLine("Name: " + s["Name"]); 
       Console.WriteLine("PlanEstimate: " + s["PlanEstimate"]); 

       var tasks = s["Tasks"]; 

       foreach (var t in tasks) 
       { 
        Console.WriteLine("Task: " + t["FormattedID"] + " " + t["State"]); 
       } 
      } 

     } 
    } 
} 
相關問題