Указание списка элементов для параметров с помощью WorkItemStore.Query в TFS - PullRequest
9 голосов
/ 13 февраля 2011

У меня есть следующий WIQL-запрос для проекта TFS:

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 ]

10 голосов
/ 20 февраля 2011

Я понимаю, что вы пытаетесь сделать, но не похоже, что это возможно.Вам нужен следующий запрос:

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];
2 голосов
/ 16 февраля 2011

Назначено поле на самом деле [System.AssignedTo].Я не верю, что использование отображаемого имени поля будет работать.

...