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

C# LINQ分组查询问题:如何找出不含Server A的名称组并返回对应项

解决分组中不存在Server A的筛选问题

你的代码问题出在GroupBy的处理逻辑上:你在分组时直接过滤出了每个分组里server="A"的元素,导致没有Server A的分组变成了空序列,后续调用FirstOrDefault()自然返回null。

修改后的代码如下:

var list = new[]
{
    new { name = "object1", server="A"},
    new { name = "object1", server="B"},
    new { name = "object2", server="B"},
    new { name = "object2", server="C"},
    new { name = "object3", server="B"},
    new { name = "object3", server="A"},
    new { name = "object4", server="C"},
};

var selectServerANotPresent = list
    .GroupBy(g => g.name)
    .Where(group => !group.Any(item => item.server == "A"))
    .Select(group => group.First())
    .ToList();

System.Diagnostics.Debug.WriteLine(string.Join("\r\n", selectServerANotPresent));

修改说明:

  1. 调整分组逻辑:直接按name分组,保留每个分组的所有元素,不再提前过滤Server A的条目;
  2. 筛选目标分组:用!group.Any(item => item.server == "A")判断分组中是否不存在Server A的元素,筛选出符合条件的分组;
  3. 提取结果:对每个符合条件的分组调用First(),获取该分组的第一个元素,得到预期的输出结果。

运行后会输出:

{ name = object2, server = B }
{ name = object4, server = C }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:05:12