2014-09-11 3 views
4

Я пытаюсь перечислить все мои элементы журнала, но некоторые элементы отставания имеют элементы для хранения детей. Я хотел бы перечислить их следующим образом: BackLogItemParent/BackLogItemChild1/BackLogItemChild2 и т. Д. Для многих дочерних элементов каждого родительского элемента.Как я могу получить список моих элементов BackLog в TFS в иерархическом формате?

я могу получить все пункты отставание:

public WorkItemCollection BackLogItems() 
     { 
      WorkItemCollection results = this.tfsWorkItemStore.Query(
       "Select [System.Id], [System.Title] " + 
       "From WorkItems " + 
       "Where [Work Item Type] = 'Product BackLog Item' " + 
       "And [System.Title] <> '<unused>' " + 
       "Order By [System.Title] Asc" 
       ); 

      return results; 
     } 

и потенциально делать что-то вроде:

private WorkItem GetChildBackLogItems(WorkItem wi) 
     {     
      foreach (WorkItemLink wil in wi.WorkItemLinks) 
      {      
      //some sort of recursive call to get all links if backlog is a parent 
      //but may need to filter out by top parent items first. 
      } 
      return wi; 
     } 

Но у меня возникают проблемы создания списка в том, как я хотел, как я не совсем получил хорошее представление о том, как ссылка обозначается в коде. Я подозреваю, что мне может понадобиться вместо этого использовать таблицу workitemlinks.

В проводнике команд есть тип запроса «Дерево рабочих элементов», который перечисляет эти элементы в иерархическом порядке, я предполагаю, что я пытаюсь сделать что-то подобное чуть более плоским.

Любая помощь будет оценена по достоинству.

+0

Спасибо за то, что вы получили все предметы PBI, что было очень полезно для меня, могу я спросить, для чего эта часть запроса? «И [System.Title] <> '« Большое спасибо – Alex

+0

@Alex у нас есть предметы для хранения заметок для места, с которых можно легко скопировать, и они называются «» – Popo

+0

ah Я вижу, это имеет смысл, спасибо за ответ – Alex

ответ

0

Я основывал свой код на Colin's solution. В основе вы должны позвонить Query.RunLinkQuery, а затем WorkItemStore.GetWorkItem, чтобы снести ваши рабочие элементы.

+0

Я пробовал использовать решение Colin, но LINQ ломается, когда я кормлю его своим списком workiteminfo, после его рефакторинга он все равно не работает. Количество итераций слишком велико. :( – Popo

+0

Не звучит правильно, может быть, вы не следуете только ссылкам родительского ребенка. Я не понимаю, зачем вам нужен иерархический запрос, если вы хотите ВСЕ РАБОЧИЕ элементы: достаточно одного плоского. –

0

Если вы создаете запрос в Visual Studio, который имеет то, что вы хотите, вы можете использовать «Сохранить как ...», чтобы сохранить его на рабочем столе. Это будет запрос «Иерархия».

Затем вы можете получить весь список рабочих мест в виде плоского списка, передав запрос в WorkItemStore.Query().

После этого вы можете перебирать и строить свое дерево в коде.

 Смежные вопросы

  • Нет связанных вопросов^_^