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

如何使用LINQ移除列表中相邻的重复元素

实现方案

你可以直接用LINQ内置的带索引参数的Where重载实现,逻辑非常简单:只保留第一个元素,以及和前一个元素值不同的元素即可。

核心代码

var idList = new List<int>(){100,100,200,200,300,300,100,100,200,200,300,300};
var result = idList.Where((value, index) => index == 0 || value != idList[index - 1]).ToList();

运行后得到的result就是你预期的[100,200,300,100,200,300]。

通用扩展方法实现

如果需要复用这个逻辑,可以封装成通用的LINQ扩展方法,支持任意类型的集合,还可自定义比较规则:

public static class EnumerableExtensions
{
    public static IEnumerable<T> RemoveAdjacentDuplicates<T>(this IEnumerable<T> source, IEqualityComparer<T> comparer = null)
    {
        comparer ??= EqualityComparer<T>.Default;
        T previous = default;
        bool isFirstElement = true;
        foreach (var current in source)
        {
            if (isFirstElement || !comparer.Equals(current, previous))
            {
                yield return current;
                previous = current;
                isFirstElement = false;
            }
        }
    }
}

调用方式:

var result = idList.RemoveAdjacentDuplicates().ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:06:03