我试图使用tfs api和C#
从tfs获取给定工作项id的所有子项这是方案
功能(Id:1)
- >产品积压项目(Id:2) - >任务(Id:3)
- >产品积压项目(Id:4)
ID为1的工作项目有2个孩子,ID为2& 4
Id:2有一个Id:3
的孩子当一个工作项id被传递时我想得到所有的孩子,完成树所以对于上面的场景我当Id:1被传递时该方法应该返回所有的孩子ID 2,3,4 这是我到目前为止所做的,难以进行递归调用,有人可以给我一只手
注意:我不想使用wiql返回层次结构,我想使用WorkItemLinks返回所有子项
public List<string> getWorkItemChildren(string Collection, string Project, int Id)
{
var teamCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("tfsConnection" + Collection));
teamCollection.EnsureAuthenticated();
WorkItemStore store = new WorkItemStore(teamCollection);
Query query = new Query(store, "select * from issue where System.TeamProject = @project", new Dictionary<string, string>() { { "project", Project } });
query.RunQuery();
WorkItem workitem = store.GetWorkItem(Id);
int parentLinkId = store.WorkItemLinkTypes.LinkTypeEnds["Parent"].Id;
List<int> relatedWorkItemIds = new List<int>();
List<string> relatedWorkItemType = new List<string>();
if(workitem.Links.Count!=0)
{
foreach (WorkItemLink link in workitem.WorkItemLinks)
{
if (link.LinkTypeEnd.Id != parentLinkId)
{
relatedWorkItemIds.Add(link.TargetId);
}
}
foreach (var linkType in relatedWorkItemIds)
{
WorkItem relatedWorkItem = store.GetWorkItem(linkType);
relatedWorkItemType.Add(relatedWorkItem.Type.Name);
foreach(WorkItemLink childlinks in relatedWorkItem.WorkItemLinks)
{
}
}
return relatedWorkItemType;
}
}
答案 0 :(得分:0)
您需要使用:
Store.GetWorkItem(123);
然后遍历链接,并为每个子链接类型执行相同的操作。
然后重复...