如何使用 WIQL 查询具有指定注释的工作项链接

Hop*_*ess 3 tfs wiql

我需要一种快速的方法来获取按链接注释过滤的链接列表。有一个代码:

var linkCommentFilter = "Some link comment";
const string queryString = @"SELECT [System.Id]
                               FROM workItemlinks
                               WHERE [System.Links.LinkType] = 'Tested By'
                               AND [System.Links.Comment] = '{0}'
                               AND ([Source].[System.Id] IN ({1}))";

var query = new Query(store, string.Format(queryString, 
    linkCommentFilter,
    string.Join(",", wiIds)));
var result = query.RunLinkQuery().ToArray();
Run Code Online (Sandbox Code Playgroud)

尝试运行此代码时发生异常“字段 System.Links.Comment 不存在”。我该如何解决它?

Cec*_*SFT 5

System.Links.Comment您无法使用 WIQL 查询具有指定注释的工作项链接,因为TFS 中没有字段。

您需要使用 TFS Rest api获取带有链接和附件的工作项列表,请检查下面的示例代码:

 public List<WorkItem> GetWorkItemsWithLinksAndAttachments()
        {
            int[] workitemIds = new int[] { 1, 5, 6, 10, 22, 50 };

            VssConnection connection = Context.Connection;
            WorkItemTrackingHttpClient workItemTrackingClient = connection.GetClient<WorkItemTrackingHttpClient>();

            List<WorkItem> workitems = workItemTrackingClient.GetWorkItemsAsync(workitemIds, expand: WorkItemExpand.Links | WorkItemExpand.Relations).Result;

            foreach(var workitem in workitems)
            {
                Console.WriteLine("Work item {0}", workitem.Id);

                foreach (var relation in workitem.Relations)
                {
                    Console.WriteLine("  {0} {1}", relation.Rel, relation.Url);
                }
            }
Run Code Online (Sandbox Code Playgroud)

relation.Attributes["comment"]然后用in查找指定的注释workitem.Relations