2016-08-16 1 views
0

J'essaie d'obtenir tous les différents chemins d'itération de notre projet d'équipe en utilisant une requête wiql.C# Requête WIQL pour obtenir tous les chemins d'itération différents

Ma solution actuelle est la suivante:

J'utilise cette requête

public static readonly string IterationPathsQuery = @"SELECT [System.IterationPath] FROM workitems 
     WHERE[System.WorkItemType] = 'Requirement' 
     OR[System.WorkItemType] = 'Feature'"; 

Pour obtenir tous les WorkItems pertinents et itérer eux pour obtenir tous les différents chemins itératifs.

private void FillIterationPathComboBox(WorkItemStore wiStore) 
{ 
    WorkItemCollection wiCollection = wiStore.Query(Constants.IterationPathsQuery); 
    var paths = new List<string>(); 

    ... 
    foreach (WorkItem wi in wiCollection) 
    { 
     ... 

     if (!String.IsNullOrEmpty(wi.IterationPath) && !paths.Contains(wi.IterationPath)) 
     { 
      paths.Add(wi.IterationPath); 
     } 
    } 

    foreach (string path in paths) 
    { 
     IterationPathComboBox.Items.Add(path); 
    } 
} 

Mais cette solution n'est pas avec de bonnes performances. Existe-t-il un moyen d'interroger uniquement les différents chemins d'itération utilisés? J'ai déjà lu que "distinct" n'est pas supporté, mais il y a peut-être un moyen auquel je n'ai pas encore pensé. WIQL Query ne peut pas filtrer différents chemins d'itération.

+0

Voulez-vous obtenir tous les chemins d'itération du projet ou seulement les différents chemins d'itération pour certains éléments de travail spécifiques? –

Répondre

0

Voici deux alternatives:

  1. Vous pouvez exporter la requête vers Excel et utiliser Excel RemoveDuplicates méthode pour filtrer les différents chemins itératifs.

  2. Vous pouvez obtenir une liste des chemins d'itération, puis supprimer les doublons et les enregistrements distincts à l'aide de LINQ. Vérifiez l'extrait de code sur this website.

    using System; 
    using System.Collections.Generic; 
    using System.Data; 
    using System.Linq; 
    
    namespace AbundantCode 
    { 
        internal class Program 
        { 
         //How to Remove Duplicates and Get Distinct records from List using LINQ ? 
    
         private static void Main(string[] args) 
         { 
          List<Employee> employees = new List<Employee>() 
    { 
    
    new Employee { EmpID = 1 , Name ="AC"}, 
    new Employee { EmpID = 2 , Name ="Peter"}, 
    new Employee { EmpID = 3 , Name ="Michael"}, 
    new Employee { EmpID = 3 , Name ="Michael"} 
    }; 
    
    //Gets the Distinct List 
    var DistinctItems = employees.GroupBy(x => x.EmpID).Select(y => y.First()); 
          foreach (var item in DistinctItems) 
          Console.WriteLine(item.Name); 
          Console.ReadLine(); 
         } 
        } 
    
        public class Employee 
        { 
         public string Name { get; set; } 
         public int EmpID { get; set; } 
        } 
    } 
    
+0

merci! La variante 2 a significativement augmenté les performances de ma méthode. – Goldi