You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# LINQ对列表同一属性校验多条件返回false问题排查

问题原因

你当前的判断条件o.name.Equals("AAA") && o.name.Equals("BBB")是要求单条记录的name字段同时等于两个不同的字符串,这一逻辑本身不可能成立,所以_check永远返回false。

你已经按testNumber做了分组,每个分组下是同一个测试编号对应的所有记录,你实际需要判断的是「当前分组下既存在name为AAA的记录,也存在name为BBB的记录」,调整判断逻辑即可。

修正后的代码示例

static void Main(string[] args)
{
    var _tests = new List<testDetails>()
    {
        new testDetails { testNumber = "1111111", name =  "AAA"  },
        new testDetails { testNumber = "1111111",  name =  "BBB"   },
        new testDetails { testNumber = "1111111",  name =  "CCC"   },
        new testDetails { testNumber = "1111111",  name =  "DDD"   },
        new testDetails { testNumber = "222222", name =  "AAA"  },
        new testDetails { testNumber = "22222",  name =  "BBB"   },
        new testDetails { testNumber = "33333",  name =  "CCC"   },
        new testDetails { testNumber = "11111",  name =  "EEE"   },
        new testDetails { testNumber = "33333",  name =  "CCC"   },
        new testDetails { testNumber = "55555",  name =  "DDD"   }
    };

    foreach (var testGroup in _tests.GroupBy(x => x.testNumber).ToList())
    {
        // 判断当前分组同时存在AAA和BBB的记录
        bool _check = testGroup.Any(o => o.name.Equals("AAA")) && testGroup.Any(o => o.name.Equals("BBB"));
        if (_check)
        {
            // 分组的Key就是对应的testNumber,无需额外查询
            string targetTestNumber = testGroup.Key;
            // 你的后续处理逻辑
        }
    }
}

按照你的测试数据,只有testNumber = "1111111"的分组会满足判断条件。


内容的提问来源于stack exchange,提问作者DeSon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:21:02