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

使用Linq移除列表中重复Name的项,优先保留Primary类型

解决方案:Linq实现按Name去重并保留指定类型项

原始定义与数据

首先是你的MyClass定义:

public class MyClass
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
}

对应的示例列表数据(假设已加载为List<MyClass> myList):

1 John primary
2 John secondary
3 Joe primary
4 Jim primary

Linq实现代码

直接用链式调用完成需求,无需手动循环创建列表:

var filteredList = myList
    .GroupBy(item => item.Name)
    .Select(group => 
        group.FirstOrDefault(item => item.Type == "primary") ?? group.First()
    )
    .ToList();

逻辑解释

  • GroupBy分组:按Name将所有项分组,确保同一名称的项被归为一组。
  • 分组内筛选:对每个分组执行两个操作:
    1. 优先查找组内Type为primary的项(用FirstOrDefault,找不到会返回null);
    2. 如果组内没有primary类型的项(说明该名称只有一条数据),则直接取组内第一个元素(也就是唯一的那条数据)。

最终结果

执行后filteredList将包含以下项:

1 John primary
3 Joe primary
4 Jim primary

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:01:39