【问题标题】:How to change operator precedence (first OR, then AND) in Team Foundation Queries?如何更改 Team Foundation 查询中的运算符优先级(首先是 OR,然后是 AND)?
【发布时间】:2016-09-30 10:59:33
【问题描述】:

背景:

Visual Studio 2015 允许创建对存储在 Team Foundation 服务器 (TFS) 中的工作项、错误等的查询。是一个查询编辑器,您可以在其中添加条件,例如

这将返回当前项目中尚未关闭和解决的错误。到目前为止,它运行良好,错误已从外部系统 (HP ALM) 复制到 TFS。

如果我现在想限制只分配给我的错误,我可以使用“分配给”字段并将其添加为条件,但 ALM 使用由“HP ALM 分配给”字段跟踪的不同帐户。


所以我想创建一个类似的条件

(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


问题:
我需要进行哪些更改才能使查询按预期工作?



更新:我按照Daniel Mann 的建议尝试了分组,但这也没有返回我想要的结果:

我尝试将OR HP ALM Assigned To = "myALMID" 更改为AND HP ALM Assigned To = "myALMID",但这仍然不正确。

【问题讨论】:

    标签: visual-studio tfs visual-studio-2015 operator-precedence alm


    【解决方案1】:

    当您选择两个或多个子句时,您可以将它们组合在一起。 UI 上应该有按钮,右键上下文菜单上应该有项目。

    【讨论】:

    • 感谢您的提示,但请查看我的更新 - 仍然遇到问题。
    【解决方案2】:

    组子句对我有用。您可以检查HP ALM Assigned To字段的值是否正确:

    【讨论】:

      【解决方案3】:

      考虑到来自Cece - MSFTDaniel Mann 的提示,我将查询修改如下:

      您可以看到现在只返回了 14 个项目,这是正确的。 问题似乎已解决,谢谢双方 - 我支持你,因为你们都为解决方案做出了贡献。

      现在让我总结一下,我从中学到了什么:

      • 条件出现的顺序似乎很重要。我将包含 HP Assigned to 和 Assigned to 的组移到顶部,以便能够在它们之间仅选择“OR”并将其组合在一起

      • 我的 ALM ID 用引号括起来,这是错误的 - 所以我删除了它们。

      • 我将状态条件组合在一起(但我不确定是否需要这样做)

      可惜的是查询编辑器不允许“Not In”,只允许“Not In Group”,所以我不得不为每个想要排除的状态重复“State”行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-17
        • 2014-08-02
        • 1970-01-01
        • 2023-01-31
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多