我正在尝试列出所有积压物品,但有些积压物品有儿童积压物品。我想以这种方式列出它们:BackLogItemParent / BackLogItemChild1 / BackLogItemChild2等,但每个父项都有很多孩子。
我可以获得所有积压项目:
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 :(得分:0)
我的代码基于Colin's solution。您需要致电Query.RunLinkQuery然后WorkItemStore.GetWorkItem来提取工作项。
答案 1 :(得分:0)
如果在Visual Studio中创建具有所需内容的查询,则可以使用“另存为...”将其保存到桌面。这将是一个“层次结构”查询。
然后,您可以将查询传递给WorkItemStore.Query(),将整个工作列表作为一个平面列表。
之后,您可以在代码中迭代并构建树。