使用TFS中的WorkItemStore.Query指定参数的项列表

时间:2011-02-13 16:00:06

标签: tfs tfs-sdk wiql

我为TFS项目提供了以下WIQL查询:

string query = "SELECT * FROM Issue WHERE [System.TeamProject] = @Project "+
                "AND [Assigned To] IN (@AssignedTo)";

Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("Project","test");
parameters.Add("AssignedTo","'chris','tfsuser'");
WorkItemStore.Query(query, parameters);

这是通过.NET TFS API运行的。

我的问题在于 AssignedTo 参数。这有什么意义?我已经尝试过string[]List<string>以及上面有和没有引号的情况。每一个似乎都不起作用。

2 个答案:

答案 0 :(得分:10)

我明白你要做的是什么,但它看起来不太可能。您想要的查询是:

WHERE [System.AssignedTo] in ('John Smith', 'Jane Citizen')

在语义上与此相同:

WHERE [System.AssignedTo] = 'John Smith' OR [System.AssignedTo] = 'Jane Citizen'

我能解决如何在代码中实现它的唯一方法是将身份指定为单独的参数:

TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://localhost:8080/tfs/"));
WorkItemStore wis = tfs.GetService<WorkItemStore>();

Dictionary<string, string> values = new Dictionary<string, string>();

values.Add("parameter1", "John Smith");
values.Add("parameter2", "Jane Citizen");

Query query = new Query(wis, "SELECT [System.Id] FROM WorkItems WHERE [System.AssignedTo] IN (@parameter1, @parameter2)", values);

WorkItemCollection workItems = wis.Query(query.QueryString);
WorkItem workItem = workItems[0];

答案 1 :(得分:2)

Assigned To字段实际上是[System.AssignedTo]。我不相信使用该字段的显示名称将起作用。