Использование TFS WIQL для получения идентификаторов ревизий для пользовательской истории?

Получение пользовательских историй, назначенных мне

WorkItemStore _WorkItemStore = (WorkItemStore) __ProjectCollection.GetService(typeof(WorkItemStore));                      
String _Query = @"SELECT [System.Id] FROM WorkItems where [Assigned to] = @Me AND [Work Item Type] = 'User Story'";
WorkItemCollection _Collection = _WorkItemStore.Query(_Query);

Пользовательская история может иметь тип рабочего элемента "Задача" или "Ошибка", назначенный ему как дочерний элемент. Затем с ошибками / задачами связаны наборы изменений.

Могу ли я получить список этих наборов изменений, которые прикреплены к задачам / ошибкам, которые являются дочерними элементами этих пользовательских историй?

1 ответ

Я добавляю этот ответ в качестве альтернативы, однако я все еще хотел бы знать, возможно ли достичь того же результата с помощью запроса WIQL.

Рекурсивная функция, которую я написал для извлечения всех наборов изменений для пользовательской истории, которые связаны с любыми дочерними рабочими элементами.

public List<Changeset> Query(int id, List<Changeset> associatedChangesets)
{            
    WorkItemStore _WorkItemStore = (WorkItemStore) __ProjectCollection.GetService(typeof(WorkItemStore));            
    WorkItem _WorkItem = _WorkItemStore.GetWorkItem(id);

    List<Changeset> _AssociatedChangesets;

    if (associatedChangesets == null)
    {
            _AssociatedChangesets = new List<Changeset>();
    }
    else
    {
        _AssociatedChangesets = associatedChangesets;
    }

    foreach (Link _Link in _WorkItem.Links)
    {
        RelatedLink _RelatedLink = null;
        ExternalLink _ExternalLink = null;

        if(_Link is RelatedLink)
        {
            _RelatedLink = (RelatedLink)_Link;
        }
        else if(_Link is ExternalLink)
        {
            _ExternalLink = (ExternalLink)_Link;
        }

        if (_ExternalLink != null)
        {
            ArtifactId _Artifact = LinkingUtilities.DecodeUri(_ExternalLink.LinkedArtifactUri);
            if (String.Equals(_Artifact.ArtifactType, "Changeset", StringComparison.Ordinal))
            {                        
                _AssociatedChangesets.Add(__VersionControl.ArtifactProvider.GetChangeset(new Uri(_ExternalLink.LinkedArtifactUri)));
            }
        }

        if (_RelatedLink != null)
        {
            if (String.Equals(_RelatedLink.LinkTypeEnd.Name, "Child", StringComparison.Ordinal))
            {
                associatedChangesets = Query(_RelatedLink.RelatedWorkItemId, _AssociatedChangesets);
            }
        }
    }
    return associatedChangesets;
}
Другие вопросы по тегам