我遇到了一个问题,我想从WorkItemCollection
获取WorkItemStore
。
我知道可以使用Query()
方法。
但在我的方案中,Query
方法无效,因为我正在使用方法WorkItemStore.Query Method (Int32[], String)
。
将String
参数作为
Select [System.Id],[System.State],[System.Title],[System.WorkItemType]
from WORKITEMS
where [System.WorkItemType] = 'Requirement' and [System.TeamProject] = 'Test_Baseline'
但是在执行此查询时,它会将消息抛出为Invalid Query Provided
。
任何人都可以告诉我该如何解决这个问题?
谢谢你提前。
答案 0 :(得分:3)
@Ankit, 使用Query(Int32 [],String)oveload运行查询得到的异常是:
"参数化查询不支持查询字符串的WHERE和ORDER BY子句。"
我认为解释了为什么你不能使用这个重载来运行这个WIQL。您应该从查询中删除WHERE子句或使用Query(String)方法
答案 1 :(得分:0)
我来到这里是因为我正在尝试实现一个能够同时处理LIST和TREE查询的查询函数。最后我写了这样的东西......
JArray RunQuery(string wiql)
{
var i = wiql.ToLower().IndexOf("from workitemlinks");
if (i > 0)
{
// Handle "Tree" queries
var query = new Query(Store, wiql);
var linkInfoList = query.RunLinkQuery();
var parent = linkInfoList.ToDictionary(link => link.TargetId, link => link.SourceId);
// Remove all WHERE and ORDER BY from query
var items = tfs.Store.Query(parent.Keys.ToArray(), wiql.Substring(0, i) + "from workitems");
var result = JsonUtil.ConvertItemList(items);
foreach (JObject json in result)
{
json["Parent"] = parent[json.Value<int>("ID")];
}
return result;
}
// Handle "List" query
return JsonUtil.ConvertItemList(Store.Query(wiql));
}
我希望有人觉得这很有帮助。