我有这个WIQL,其目的是找到分配给工作项的用户。
var wiql = string.Format("SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State]" +
" FROM WorkItems" +
" WHERE ([System.TeamProject] = '{0}')" +
" AND ([System.WorkItemType] = 'Task' OR [System.WorkItemType] = 'Bug')" +
" ORDER BY [System.Id]", projectName);
我正在执行它......
Wiql wiql = new Wiql() { Query = wiqlQueryString };
using (var workItemTrackingHttpClient = new WorkItemTrackingHttpClient(VstsAccess.AccessUri, VstsAccess.AccessCredentials))
{
var workItemQueryResult = workItemTrackingHttpClient.QueryByWiqlAsync(wiql).Result;
if (workItemQueryResult != null && workItemQueryResult.WorkItemRelations.Any())
{
List<int> sourceIdList = new List<int>();
foreach (var item in workItemQueryResult.WorkItemRelations)
sourceIdList.Add(item.Target.Id);
int[] arr = sourceIdList.ToArray();
string[] fields = { "System.Id", "System.WorkItemType", "System.AssignedTo", "System.Title", "System.Description", "System.State", "System.IterationPath", "System.TeamProject", "System.ChangedDate", "System.ChangedBy", "System.CreatedDate" };
return workItemTrackingHttpClient.GetWorkItemsAsync(arr, fields, workItemQueryResult.AsOf).Result;
}
else
return new List<WorkItem>();
}
但是&#34; AssignedTo&#34;和&#34;描述&#34;字段未显示在工作项中&#39;字典字段集。为什么会这样,我该如何解决这个问题呢?
答案 0 :(得分:2)
您可以使用以下代码查询工作项,它具有“AssignedTo”和“Description”字段值。
POST /test/name/_search
{
"query": {
"match": {
"vital.full_name": { <-- fix this
"query": "Tom Doe",
"operator": "and"
}
}
}
}
POST /test/name/_search
{
"query": {
"match": {
"vital.full_name": { <-- fix this
"query": "Tom Do",
"operator": "and"
}
}
}
}
答案 1 :(得分:0)
查询结果将只包含非空字段,即没有人分配给工作项,该字段根本不在Fields
词典中。
您需要对这些字段实施自定义检查,然后根据您的逻辑将它们分配给某些内容:
int[] arr = ids.ToArray();
string[] fields = new string[] {
"System.Id",
"System.Title",
"System.State",
"System.AssignedTo"
};
var workItems = await workItemTrackingHttpClient.GetWorkItemsAsync(arr, fields, workItemQueryResult.AsOf);
List<WorkItemData> list = new List<WorkItemData>();
foreach (var workItem in workItems)
{
var wi = new WorkItemData(workItem.Id.Value);
wi.Title = workItem.Fields["System.Title"].ToString();
wi.State = workItem.Fields["System.State"].ToString();
wi.AssignedTo = workItem.Fields.ContainsKey("System.AssignedTo") ? workItem.Fields["System.AssignedTo"].ToString() : "";
list.Add(wi);
}