private Dictionary <string, double> GetTotalsPerField(WorkItem[] workItems) { var totalsPerField = new Dictionary <string, double>(); NumericFieldDefinitions.ToList().ForEach(fd => totalsPerField.Add(fd.Name, 0)); foreach (WorkItem workItem in workItems) { foreach (FieldDefinition fieldDefinition in NumericFieldDefinitions) { if (!workItem.Fields.Contains(fieldDefinition.Name)) { continue; } var fieldValue = workItem.Fields[fieldDefinition.Name].Value; if (fieldValue is double) { totalsPerField[fieldDefinition.Name] += (double)fieldValue; } } } return(totalsPerField); }
public void RefreshWorkItems(IResultsDocument queryResultsDocument) { string query = queryResultsDocument.QueryDocument.QueryText; Hashtable context = GetTfsQueryParameters(queryResultsDocument); var tpc = visualStudioAdapter.GetCurrent(); var workItemStore = tpc.GetService <WorkItemStore>(); var workItemQuery = new Query(workItemStore, query, context); NumericFieldDefinitions = GetNumericFieldDefinitions(workItemQuery); if (!NumericFieldDefinitions.Any()) { CurrentWorkItems = new WorkItem[0]; return; } WorkItemCollection workItemCollection = workItemStore.GetWorkItems(workItemQuery, NumericFieldDefinitions); WorkItem[] workItemsA = new WorkItem[workItemCollection.Count]; ((ICollection)workItemCollection).CopyTo(workItemsA, 0); CurrentWorkItems = workItemsA; RefreshTotals((queryResultsDocument.SelectedItemIds ?? new int[0])); }