2016-08-16 4 views
0

私は、wiqlクエリを使用して、チームプロジェクトのすべての異なる反復パスを取得しようとしています。c#WIQLすべての異なる反復パスを取得するクエリ

私の実際の解決策は次のとおりです。

私は、関連するすべての作業項目を取得し、すべての異なる反復のパスを得るためにそれらを反復処理するには、このクエリ

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

を使用しています。

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); 
    } 
} 

しかし、この解決策はパフォーマンスが良くありません。 使用されている異なるイテレーションパスのみを照会する方法はありますか?私はすでに「別個」がサポートされていないと読んでいますが、私がまだ考えていない方法があるかもしれません。

+0

あなたには、いくつかの特定の作業項目のすべてのプロジェクトで繰り返しパスまたは異なるだけ反復パスを取得したいですか? –

答えて

0

WIQLクエリは異なる反復パスをフィルタリングできません。

  1. あなたがExcelにクエリをエクスポートして、別の反復のパスをフィルタリングするために、Excel RemoveDuplicatesメソッドを使用することができます。ここでは2つの選択肢があります。

  2. Iteration Pathのリストを取得し、LINQを使用してDuplicatesとGet Distinctレコードを削除できます。 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

ありがとう! 代替案2は私の方法のパフォーマンスを大幅に向上させました。 – Goldi

関連する問題