Как получить список дочерних задач из элемента журнала невыполненных работ в TFS API?

Учитывая идентификатор невыполненной работы продукта, я хочу программно получить список задач, которые являются дочерними по отношению к PBI.

Мне известно, что в задаче нет ни одного поля с надписью «Parent PBI Id». У меня есть работающая версия кода, но она действительно очень медленная, поскольку я выполняю часть своей фильтрации в клиенте.

Посмотрите, как у меня сейчас дела:

string wiqlQuery =
    string.Format(
        "Select ID, [Remaining Work], State " +
        "from WorkItems " +
        "where (([Work Item Type] = 'Task')" +
        " AND ([Iteration Path] = '{0}' )" +
        " AND (State <> 'Removed')" +
        " AND (State <> 'Done')) ",
        sprint, storyId);

// execute the query and retrieve a collection of workitems
WorkItemCollection workItems = wiStore.Query(wiqlQuery);

if (workItems.Count <= 0)
    return null;

var result = new List<TaskViewModel>();
foreach (WorkItem workItem in workItems)
{
    var relatedLink = workItem.Links[0] as RelatedLink;
    if (relatedLink == null) continue;
    if (relatedLink.RelatedWorkItemId != storyId) continue;

    Field remWorkField = (from field in workItem.Fields.Cast<Field>()
                          where field.Name == "Remaining Work"
                          select field).FirstOrDefault();
    if (remWorkField == null) continue;
    if (remWorkField.Value == null) continue;

    var task = new TaskViewModel
    {
        Id = workItem.Id,
        ParentPbi = relatedLink.RelatedWorkItemId,
        RemainingWork = (double) remWorkField.Value,
        State = workItem.State
    };

    result.Add(task);
}

return result;
7
задан abatishchev 5 October 2011 в 08:46
поделиться