9

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>どれもうまくいかないようです。

4

2 に答える 2

10

あなたがやろうとしていることは理解できますが、それは可能ではないようです。必要なクエリは次のとおりです。

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

意味的にはこれと同じです:

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

コードでそれを実現する方法を見つける唯一の方法は、ID を個別のパラメーターとして指定することです。

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];
于 2011-02-20T01:39:32.627 に答える
2

Assigned To フィールドは実際には [System.AssignedTo] です。フィールドの表示名を使用してもうまくいくとは思えません。

于 2011-02-16T12:19:31.440 に答える