如何以分层格式获取TFS BackLog项的列表
本文关键字:BackLog 列表 TFS 获取 分层 格式 | 更新日期: 2023-09-27 18:21:43
我正在尝试列出我的所有积压项目,但有些积压项目有子积压项目。我想这样列出它们: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表。
在团队资源管理器中有一个"工作项树"查询类型,它以层次结构的方式列出了这些项,我想我正在尝试做一些类似的事情,只是更简单一点。
如有任何帮助,我们将不胜感激。
如果您在Visual Studio中创建了一个具有所需内容的查询,则可以使用"另存为…"将其保存到桌面。这将是一个"层次结构"查询。
然后,您可以通过将查询传递给WorkItemStore.query().来获得整个Workiten列表作为平面列表
之后,您可以在代码中迭代并构建树。
我的代码基于Colin的解决方案。在核心,您需要调用Query.RunLinkQuery,然后调用WorkItemStore.GetWorkItem来下拉您的工作项。