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

C#如何获取字符串列表中各重复元素最后一次出现的去重结果

实现方案

你可以根据场景选择以下两种常用实现方式:

  • 方式1:双反转+Distinct 简洁实现
    该方案代码量最少,适合纯值类列表的快速处理:
List<string> filterList = new List<string>()
{
    "postpone", "access", "success", "postpone", "success"
};

var result = filterList.AsEnumerable().Reverse().Distinct().Reverse().ToList();
Console.WriteLine(string.Join(",", result)); // 输出:access,postpone,success

原理:第一次反转列表后,Distinct()会保留每个元素第一次出现的实例(对应原列表中最后一次出现的实例),第二次反转即可得到按原列表最后一次出现顺序升序排列的去重结果。

  • 方式2:GroupBy显式处理
    该方案逻辑清晰可读性高,后续如果要扩展需求(比如统计出现次数、适配复杂类型元素)修改成本更低:
List<string> filterList = new List<string>()
{
    "postpone", "access", "success", "postpone", "success"
};

var result = filterList
    // 绑定元素与对应的索引
    .Select((item, index) => new { Item = item, Index = index })
    // 按元素值分组
    .GroupBy(x => x.Item)
    // 按每个元素最后一次出现的索引升序排序
    .OrderBy(g => g.Last().Index)
    // 提取去重后的元素值
    .Select(g => g.Key)
    .ToList();

Console.WriteLine(string.Join(",", result)); // 输出:access,postpone,success

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:15:03