如何以分层格式获取我的TFS BackLog项目列表?

时间:2014-09-11 17:43:02

标签: c# .net tfs tfs2010 tfs-workitem

我正在尝试列出所有积压物品,但有些积压物品有儿童积压物品。我想以这种方式列出它们: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表。

在团队资源管理器中有一个“工作项目树”查询类型,它以分层方式列出这些项目,我想我正在尝试做一些类似的事情,只是更平坦。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我的代码基于Colin's solution。您需要致电Query.RunLinkQuery然后WorkItemStore.GetWorkItem来提取工作项。

答案 1 :(得分:0)

如果在Visual Studio中创建具有所需内容的查询,则可以使用“另存为...”将其保存到桌面。这将是一个“层次结构”查询。

然后,您可以将查询传递给WorkItemStore.Query(),将整个工作列表作为一个平面列表。

之后,您可以在代码中迭代并构建树。