如何通过修订字段查询TFS工作项

时间:2016-06-17 03:55:35

标签: c# tfs tfs-workitem

如何通过使用修订字段查询WorkItem存储来获取WorkItem集合。

  WorkItemCollection WIC = WIS.Query(
               " SELECT * " +
               " FROM WorkItems " +
               " WHERE  [System.TeamProject]='project1' AND [Work Item Type]='Bug' AND [System.Revision.ChangedBy]=@Me  ORDER BY [System.WorkItemType], [System.Id]");

我需要这样的工作项集合,但是在[System.Revision.ChangedBy]生成的错误

有没有办法让工作项集合的修订版更改为= @ me

即如果一个工作项目的修订版本至少有一条记录由我改变,我需要在我的工作项目集合中

我试过很多方法但还没有找到解决方案。

我尝试了获取所有工作项,然后尝试查找每个工作项的修订值,但执行需要很长时间。这就是为什么我需要在获取workItem集合时过滤它们,

感谢

1 个答案:

答案 0 :(得分:1)

不,你不能在WIQL脚本中使用“System.Revision.ChangedBy”。并且您也不能在API中使用“@me”宏,它只能在TFS Web Portal或团队资源管理器中使用。

实现所需功能的方法与您所说的一样,首先通过WIQL获取工作项,然后检查所有这些项的修订版。一些代码供您参考:

        string tfsurl = "http://xxxxxxxxxx/";
        TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(tfsurl));
        WorkItemStore wis = ttpc.GetService<WorkItemStore>();
        WorkItemCollection wic = wis.Query(" SELECT * " + " FROM WorkItems " + "WHERE  [System.TeamProject]='GitBuildRelease' AND [Work Item Type]='Bug'");
        List<WorkItem> wies = new List<WorkItem> { };
        foreach (WorkItem wi in wic)
        {
            foreach (Revision rev in wi.Revisions)
            {
                if (rev.Fields["Changed By"].Value.ToString() == "yourdisplayname")
                {
                    wies.Add(rev.WorkItem);
                    break;
                }
            }
        }