我正在研究TFS API,我不知道TFS API有任何像LIMIT关键字或没有。我需要它进行分页。
由于
答案 0 :(得分:4)
在TFS WIQL中没有与SQL LIMIT
关键字相同的内容,您需要自己实现分页。
一种方法是在第一次访问时检索所有结果,并缓存它们并自己分页。
另一种方法是每次用户页面动态构建WIQL查询。例如:
SELECT [System.Id] FROM WorkItems WHERE <conditions>
SELECT <fields> FROM WorkItems WHERE [System.Id] IN (10,11,12,13,14,15)
根据您要实现的目标,您还应该知道TFS工作项跟踪API在字段值的封面下实现分页/延迟加载,以最大化响应时间。您可以通过附加网络嗅探器并在Visual Studio中滚动大型工作项查询来查看其工作原理。
有关详细信息,请参阅Paging of Field Values:
您可以通过选择所有字段来最小化到服务器的往返 您的代码将使用。以下代码进行一次往返 查询和一次往返每次都返回一个标题页 访问新页面。
WorkItemCollection results = WorkItemStore.Query(
"SELECT Title FROM Workitems WHERE (ID < 1000)");
foreach (WorkItem item in results)
{
Console.WriteLine(item.Fields["Title"].Value);
}
如果您的代码访问了您未在SELECT中指定的字段 子句,该字段被添加到分页字段集。再来一轮 执行trip以刷新该页面以包含其值 字段。
答案 1 :(得分:1)
我有同样的问题。我在序列上应用了Take
来限制查询提供的结果。遗憾的是,这实际上并不限制数据库返回的结果,但由于不支持该功能,因此它提供了一个可行的选项。
Me.mWorkItems.Query(pstrSQL).OfType(Of WorkItem)().Take(5)
同时使用Skip
和Take
可以进行分页。