C# Linq 多个 where 子句 [已关闭]

问题描述 投票:0回答:1

我在 https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml 运行了来自 MS 的代码 它使用 linq 从 json 文件中检索记录

这是循环

 var ipList =
                    from v in values
                    where tag.Equals((string)v["name"], StringComparison.OrdinalIgnoreCase)
                    select v["properties"]["addressPrefixes"];

这是 json 文件的第一部分

{
  "changeNumber": 294,
  "cloud": "Public",
  "values": [
    {
      "name": "ActionGroup",
      "id": "ActionGroup",
      "properties": {
        "changeNumber": 39,
        "region": "",
        "regionId": 0,
        "platform": "Azure",
        "systemService": "ActionGroup",
        "addressPrefixes": [
          "4.145.74.52/30",
          "4.149.254.68/30",
          "4.150.239.212/30",
          "4.151.103.92/30",

我需要添加 v["id"] == "AzureDevOps" 所以我就这么做了

var ipList =
    from v in values
    where tag.Equals((string)v["name"], StringComparison.OrdinalIgnoreCase) && (string)v["id"] == "AzureDevOps"
    select v["properties"]["addressPrefixes"]
    ;

它什么也不返回。难道是我的添加有误?我尝试在命令窗口中查看 (string)v["id"] == "AzureDevOps" 的值,但它不允许并且无法在变量中看到它。

感谢您的帮助

c# linq where-clause
1个回答
0
投票

我对您的查询做了一些更改。试试这个,

var ipList =
    from v in values
    where tag.Equals((string)v["name"], StringComparison.OrdinalIgnoreCase)
          && "AzureDevOps".Equals((string)v["id"], StringComparison.OrdinalIgnoreCase)
    select v["properties"]["addressPrefixes"];
© www.soinside.com 2019 - 2024. All rights reserved.