I am trying to query a single team project in the main TfsTeamProjectCollection
which contains 194 Team Projects in total. I know exactly how to get a WorkItem
by Id from a WorkItemStore
. The thing is, that by doing this, the API searches in ALL of the projects in the collection and the query takes about a minute. This is way too slow, there must be a way to query work items directly from a single team project ? Here is the code I have:
private Uri collectionUri;
private TfsTeamProjectCollection projectCollection;
private WorkItemStore workItemStore;
public Project GetTeamProject()
{
projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(collectionUri);
workItemStore = projectCollection.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects[TFS_PROJECT_KEY];
return teamProject;
}
Now that I have the Team Project I'm interested in, how can I query for work items by ID or just get all work items in this project ?
You could try something like this for getting all WIs within teamProject
:
WorkItemCollection workItemCollection = workItemStore.Query(
" SELECT [System.Id], [System.WorkItemType],"+
" [System.State], [System.AssignedTo], [System.Title] "+
" FROM WorkItems " +
" WHERE [System.TeamProject] = '" + teamProject.Name +
"' ORDER BY [System.WorkItemType], [System.Id]");
And this to get a specific WorkItem ID:
WorkItem workItem = workItemStore.GetWorkItem(555);