代码:
testItemList = testResults.Select(item => project.Store.GetWorkItem(item.TargetId)).ToList();
testItemList is (局部变量) List testItemList
testResults is (局部变量) WorkItemLinkInfo[] testResults
总共存在 610 个工作项。如何减少执行时间?截至目前,执行此行代码需要 20 秒。如何微调上面的代码,从而减少执行时间?
Query query = new Query(project.Store, "Select [Title] From WorkItems", testResults.Select(item => item.TargetId).ToArray());
var car = query.BeginQuery();
//Do something else while awaiting server response...
testItemList = query.EndQuery(car);
代码总共对服务器执行 610 次往返,并下载每个工作项的每个字段。此代码执行一次往返,并且仅下载"标题"字段。
请注意,您仍然可以访问 testitemlist 中每个工作项的每个字段,但每次访问原始查询字符串中未包含的字段都需要再次往返。
http://msdn.microsoft.com/en-us/library/bb130306.aspx
我会猜测:Store 是 WorkItemStore?
什么是测试结果?
您的 linq 语句将导致 for 循环。为每个 ID 进行新查询。您可以使用批处理查询来加快结果速度。
也许WorkItemStore.Query(id[], wiql)可以加快速度。提供 ID 列表。
然后你会得到一个WorkItemCollection。"wiql"是用于指定所需字段的查询语言。
对不起,简短的回答。我手头没有 TFS 来尝试并发布经过测试的代码片段。