c# WIQL查询获取所有不同的迭代路径
c# WIQL Query to get all different Iteration Paths
我正在尝试使用 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);
}
}
但是这个解决方案的性能不是很好。
有没有办法只查询所使用的不同迭代路径?我已经读到 "distinct" 不受支持,但也许有一种方法我还没有考虑过。
WIQL 查询无法过滤不同的迭代路径。这里有两个选择:
您可以将查询导出到Excel并使用Excel RemoveDuplicates 方法过滤不同的迭代路径。
您可以获得迭代路径列表,然后使用 LINQ 删除重复项并获取不同记录。检查 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; }
}
}
我正在尝试使用 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);
}
}
但是这个解决方案的性能不是很好。 有没有办法只查询所使用的不同迭代路径?我已经读到 "distinct" 不受支持,但也许有一种方法我还没有考虑过。
WIQL 查询无法过滤不同的迭代路径。这里有两个选择:
您可以将查询导出到Excel并使用Excel RemoveDuplicates 方法过滤不同的迭代路径。
您可以获得迭代路径列表,然后使用 LINQ 删除重复项并获取不同记录。检查 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; } } }