如何更改 Team Foundation 查询中的运算符优先级(首先是 OR,然后是 AND)?
How to change operator precedence (first OR, then AND) in Team Foundation Queries?
背景:
Visual Studio 2015 允许对存储在 [=47= 中的工作项、错误等 创建 查询]Team Foundation Server (TFS)。 有一个查询编辑器,您可以在其中添加条件
这将return 当前项目中未关闭和解决的错误。到目前为止它工作正常,错误从外部系统 (HP ALM) 复制到 TFS。
如果我现在想限制仅分配给我的错误,我可以使用 "Assigned To" 字段并将其添加为条件,但 ALM 使用由 "HP ALM Assigned To" 跟踪的不同帐户领域。
所以我想创造一个像
这样的条件
(Team Project = @Project) AND (State <> Closed) AND (State <> Resolced)
AND (HP ALM Assigned To = "myALMID" OR Assigned To = @Me)
但是如您所见,查询编辑器不允许输入括号,上面显示的条件不正确,因为它将计算为
(Team Project = @Project) AND (State <> Closed) AND (State <> Resolced)
AND (HP ALM Assigned To = "myALMID")
OR Assigned To = @Me
这似乎不一样 - 相反,它显示分配给 @Me
或 所有符合条件的项目
(Team Project = @Project) AND (State <> Closed) AND (State <> Resolced)
AND (HP ALM Assigned To = "myALMID")
因为 AND
运算符优先于 OR
。
问题:
我需要更改什么才能使查询按预期工作?
更新: 我按照 的建议尝试了分组,但这也不 return 我想要的结果:
我尝试将 OR HP ALM Assigned To = "myALMID"
更改为 AND HP ALM Assigned To = "myALMID"
,但仍然不正确。
当您 select 两个或多个子句时,您可以将它们组合在一起。 UI 上应该有按钮,右键单击上下文菜单上应该有项目。
组子句对我有效。您可以检查字段 HP ALM Assigned To
是否有正确的值:
考虑到 and 的两个提示,我修改了查询如下:
可以看到现在返回的只有14条,是正确的。 问题似乎已解决,谢谢两位 - 我给你投了赞成票,因为你们都为解决方案做出了贡献。
现在让我总结一下,我从中学到的东西:
条件出现的顺序似乎很重要。我将包含 HP Assigned to 和 Assigned to 的组移动到顶部,以便能够 select 在它们之间仅 "OR" 并将其组合在一起
我在引号中包含了 ALM ID,这是错误的 - 所以我删除了它们。
我将状态条件组合在一起(但我不确定是否需要)
遗憾的是,查询编辑器不允许 "Not In",只允许 "Not In Group",因此我不得不为每个要排除的状态重复 "State" 行。
背景:
Visual Studio 2015 允许对存储在 [=47= 中的工作项、错误等 创建 查询]Team Foundation Server (TFS)。 有一个查询编辑器,您可以在其中添加条件
这将return 当前项目中未关闭和解决的错误。到目前为止它工作正常,错误从外部系统 (HP ALM) 复制到 TFS。
如果我现在想限制仅分配给我的错误,我可以使用 "Assigned To" 字段并将其添加为条件,但 ALM 使用由 "HP ALM Assigned To" 跟踪的不同帐户领域。
所以我想创造一个像
这样的条件(Team Project = @Project) AND (State <> Closed) AND (State <> Resolced)
AND (HP ALM Assigned To = "myALMID" OR Assigned To = @Me)
但是如您所见,查询编辑器不允许输入括号,上面显示的条件不正确,因为它将计算为
(Team Project = @Project) AND (State <> Closed) AND (State <> Resolced)
AND (HP ALM Assigned To = "myALMID")
OR Assigned To = @Me
这似乎不一样 - 相反,它显示分配给 @Me
或 所有符合条件的项目
(Team Project = @Project) AND (State <> Closed) AND (State <> Resolced)
AND (HP ALM Assigned To = "myALMID")
因为 AND
运算符优先于 OR
。
问题:
我需要更改什么才能使查询按预期工作?
更新: 我按照
我尝试将 OR HP ALM Assigned To = "myALMID"
更改为 AND HP ALM Assigned To = "myALMID"
,但仍然不正确。
当您 select 两个或多个子句时,您可以将它们组合在一起。 UI 上应该有按钮,右键单击上下文菜单上应该有项目。
组子句对我有效。您可以检查字段 HP ALM Assigned To
是否有正确的值:
考虑到
可以看到现在返回的只有14条,是正确的。 问题似乎已解决,谢谢两位 - 我给你投了赞成票,因为你们都为解决方案做出了贡献。
现在让我总结一下,我从中学到的东西:
条件出现的顺序似乎很重要。我将包含 HP Assigned to 和 Assigned to 的组移动到顶部,以便能够 select 在它们之间仅 "OR" 并将其组合在一起
我在引号中包含了 ALM ID,这是错误的 - 所以我删除了它们。
我将状态条件组合在一起(但我不确定是否需要)
遗憾的是,查询编辑器不允许 "Not In",只允许 "Not In Group",因此我不得不为每个要排除的状态重复 "State" 行。