如何从TFS获取子工作项的激活日期和关闭日期

如何从TFS获取子工作项的激活日期和关闭日期,tfs,tfs-workitem,Tfs,Tfs Workitem,我想获取子工作项的激活和关闭日期,我使用以下查询: {SELECT [System.Id] ,[System.Links.LinkType] ,[System.WorkItemType] ,[System.Title] ,[System.AssignedTo] ,[System.CreatedDate] ,[System.ChangedDate] ,[Microsoft.VSTS.Common.ClosedDate] ,[Microsoft.VSTS.Common.ActivatedDate]

我想获取子工作项的激活和关闭日期,我使用以下查询:

{SELECT
[System.Id]
,[System.Links.LinkType]
,[System.WorkItemType]
,[System.Title]
,[System.AssignedTo]
,[System.CreatedDate]
,[System.ChangedDate]
,[Microsoft.VSTS.Common.ClosedDate]
,[Microsoft.VSTS.Common.ActivatedDate]
FROM WorkItems Where [System.Id] = 27279
}
我收集的结果如下:

 var flatQuery = new Query(workItemStore, detailsWiql.ToString());
 var workitems = flatQuery.RunQuery();
 var dispItem = new DisplayWorkItem
                {

                                ChangedBy = workitems[0].ChangedBy,
                                CreatedDate =  workitems[0].CreatedDate,
                                WorkItemType = workitems[0].Type.Name,
                                ParentID = links[i].TargetId
                 };
                 displayItems.Add(dispItem);
问题是在使用时。操作员我看到一个列表,其中激活日期和关闭日期选项不可用


有什么建议我在哪里犯了错误吗?

这有点难理解,但如果你只是在寻找一个特定的或已知的工作项目,即27279;为什么要运行查询,而只在WorkItemStore对象中使用GetWorkItem方法呢

var wi = workItemStore.GetWorkItem(27279);
foreach(var link in wi.WorkItemLinks)
{
     if(link.LinkTypeEnd.Name == "Child")
     {
         var child = workItemStore.GetWorkItem(link.TargetID)
         child["Closed Date"]
     } 
}

您需要指定workitem[0]。字段[System.ActivateDate]。值以获取所需的数据。还要记住,该字段可能不可用,也可能未设置。一点防御性的编程,你就可以开始了

您需要将这些字段指定为查询返回的字段,以便不需要执行工作项[0]。打开以获取完整的工作项。如果你需要使用。打开它会减慢你的代码速度


此外,还需要创建工作项和直接链接查询。最简单的方法是在visual studio中生成所需的查询,然后另存为桌面。

BJHop在这里给出了一个隐式指针:只有一组字段可用作C属性。您可以使用workitem[字段名称或引用]语法访问任何字段。