Я работаю над TFS API, я не знаю, есть ли у TFS API такие вещи, как ключевое слово LIMIT или нет. Мне это нужно для пейджинга.
Спасибо
Я работаю над TFS API, я не знаю, есть ли у TFS API такие вещи, как ключевое слово LIMIT или нет. Мне это нужно для пейджинга.
Спасибо
Нет ничего эквивалентного ключевому слову SQL LIMIT
в TFS WIQL, вам нужно будет реализовать пейджинг самостоятельно.
Один из подходов состоит в том, чтобы получить все результаты при первом доступе, кэшировать их и просмотреть самостоятельно.
Другим подходом может быть динамическое построение запроса WIQL каждый раз, когда ваши пользовательские страницы. Например:
SELECT [System.Id] FROM WorkItems WHERE <conditions>
SELECT <fields> FROM WorkItems WHERE [System.Id] IN (10,11,12,13,14,15)
В зависимости от того, чего вы пытаетесь достичь, вы также должны знать, что API отслеживания рабочих элементов TFS реализует пейджинг/отложенную загрузку скрыто для значений полей, чтобы максимизировать время отклика. Вы можете увидеть, как это работает, подключив анализатор сети и прокрутив большой запрос рабочего элемента в Visual Studio.
Дополнительную информацию см. в разделе Разбиение значений полей на страницы:
Вы можете свести к минимуму обращения к серверу, выбрав все поля, которые будет использовать ваш код. Следующий код выполняет одно обращение для запроса и одно обращение для возврата страницы заголовков каждый раз, когда осуществляется доступ к новой странице.
WorkItemCollection results = WorkItemStore.Query(
"SELECT Title FROM Workitems WHERE (ID < 1000)");
foreach (WorkItem item in results)
{
Console.WriteLine(item.Fields["Title"].Value);
}
Если ваш код обращается к полю, которое вы не указали в предложении SELECT, это поле добавляется в набор выгружаемых полей. Выполняется еще один круговой обход, чтобы обновить эту страницу, чтобы включить значения этого поля.
PageSize
количество результатов?
- person David Ferenczy Rogožan; 27.08.2015
$top=200
. Если вы заказываете свой запрос на System.Id
и создаете динамический запрос, в котором вы сохраняете последний идентификатор, возвращенный из предыдущего вызова, все готово.
- person riezebosch; 28.04.2020
Я была такая же проблема. Я применил Take
к последовательности, чтобы ограничить результаты, доступные по запросу. Это, к сожалению, фактически не ограничивает результаты, возвращаемые базой данных, но, поскольку эта функция не поддерживается, она предоставляет рабочий вариант.
Me.mWorkItems.Query(pstrSQL).OfType(Of WorkItem)().Take(5)
Использование Skip
и Take
вместе может работать для пейджинга.