gpt4 book ai didi

c# - 通过完整路径和查询名称查询 TFS 存储/保存的查询(不在 'My Queries' 或 'Shared Queries' 中的查询)

转载 作者:太空狗 更新时间:2023-10-30 01:34:02 24 4
gpt4 key购买 nike

我正在尝试通过完整路径(比“我的查询”/“共享查询”更深)和查询名称来访问已保存的 TFS 查询。

场景是用户可以将路径添加到他们的团队目录,并将他们的工作项查询的名称添加到配置 xml 文件中。我读取了 xml 并获取了数据。

示例 XML

<Teams>
<Team name ="MyTeam">
<Query project="MyProj" queryfolder="Shared Queries/blah/blah2/MyTeamFolder" queryName="MyTeams WorkItems - All Workitems"/>
</Team>
</Teams>

我希望使用“queryfolder”和“queryName”在 TFS 中查找查询到目前为止,我所拥有的适用于根目录(“我的查询”/“共享查询”),但我无法弄清楚如何让某些东西适用于更深层次的路径。

这不起作用:

  QueryHierarchy queryRoot = workItemStore.Projects["MyProj"].QueryHierarchy;
QueryFolder folder = (QueryFolder)queryRoot["Shared Queries/blah/blah2/MyTeamFolder"];
QueryDefinition query = (QueryDefinition)folder["MyTeams WorkItems - All Workitems"];
string queryResults = query.QueryText;

这将在查找文件夹时出错 QueryFolder folder = (QueryFolder)queryRoot[".."]

KeyNotFoundException

将文件夹更改为“共享查询”或“我的查询”,它能够找到该文件夹​​,但在尝试通过其名称查找查询时会出现相同的异常。正如预期的那样,如果查询位于根文件夹(共享/我的查询)中,它工作正常。

那么我该如何搜索比根文件夹更深的地方呢?

(到目前为止,所有互联网搜索都只产生了使用根文件夹的示例)

最佳答案

这种自递归方法会从查询树中找到你的查询(如果存在的话):

    static QueryDefinition GetQueryDefinitionFromPath(QueryFolder folder, string path)
{
return folder.Select<QueryItem, QueryDefinition>(item =>
{
return item.Path == path ?
item as QueryDefinition : item is QueryFolder ?
GetQueryDefinitionFromPath(item as QueryFolder, path) : null;
})
.FirstOrDefault(item => item != null);
}

你的例子给出了,调用

  var myquery = GetQueryDefinitionFromPath( (QueryFolder)workItemStore.Projects["MyProj"].QueryHierarchy, "Shared Queries/blah/blah2/MyTeamFolder/MyTeams WorkItems - All Workitems" );

关于c# - 通过完整路径和查询名称查询 TFS 存储/保存的查询(不在 'My Queries' 或 'Shared Queries' 中的查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32101019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com