WorkItemLinks上的WIQL查询

时间:2017-02-13 22:22:04

标签: c# tfs wiql azure-devops-rest-api

TFS API实现了这个类:

enter image description here

如何使用WIQL查询和TFS API来获取自给定日期以来添加或更改了父/子链接的所有工作项?我怀疑使用WorkItemLinks表是一个开始的地方,但我发现很少或没有关于提供的字段的文档。此外,请务必注意,更改工作项链接不会影响工作项的更改日期字段。我怀疑这是因为链接有自己更改/创建的日期字段。我希望在平面列表视图中获取这些项目。我有什么选择?**

1 个答案:

答案 0 :(得分:0)

我找到了另一种方法来帮助你。使用工作项查询来查找这些工作项似乎无法做到这一点。但您可以使用此方法:查找每个工作项的workitemLinks,检查其链接类型是否为“父/子”,并检查其添加/删除日期是否在您的时间段内。

var workItemStore = teamProjectCollection.GetService<WorkItemStore>();
var queryString = @"select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] 
                    from WorkItemLinks 
                    where (
                            Source.[System.TeamProject] = 'Mtt-Scrum' 
                            and Source.[System.WorkItemType] <> ''
                        ) and (
                            [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' 
                            or [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse'
                        ) and (
                            Target.[System.TeamProject] = 'Mtt-Scrum' 
                            and Target.[System.WorkItemType] <> ''
                        ) 
                    order by [System.Id] mode (MustContain)";

// Create and run the query.
var query = new Query(workItemStore, queryString);
WorkItemLinkInfo[] witLinkInfos = query.RunLinkQuery();

foreach (WorkItemLinkInfo witinfo in witLinkInfos)
{
    if (witinfo.SourceId == 0)  //find those workitems which are not at top-level
    {
        int targetWIid = witinfo.TargetId;
        WorkItem workItem = workItemStore.GetWorkItem(targetWIid); //get the workitem
        foreach (WorkItemLink wiLink in workItem.WorkItemLinks)
        {

            if (wiLink.LinkTypeEnd.Name.Equals("Parent") || wiLink.LinkTypeEnd.Name.Equals("Child"))
            {
                if (DateTime.Compare(wiLink.AddedDate, 'yourDate') < 0)
                {
                  ......
                }

            }
        }
    }          

}