将数组中的重复项堆栈减少为 c# 中的一个

Reduce stacks of duplicates in an array into only one of them in c#

我直接拿走: 例如我有一个数组

int[] integers = {1, 2, 2, 2, 4, 5, 2, 2, 2};

我喜欢的是将所有 2 的堆栈减少到只有一个 2。我需要在最后得到这个:

{1, 2, 4, 5, 2};

我了解了 .Distinct() 方法和各种比较器,但该方法会删除所有相同的元素,我不希望这样。我仍然认为应该有一些特定的方法可以通过 Linq 或其他东西来完成。谢谢!

我认为 .net 没有这方面的功能。

所以你应该使用简单的 foreach。

var result = List<int>();
foreach(var item in integers)
{
    if(!result.Any())
    {
        result.Add(item);
    }
    else if(result[result.Count() - 1] != item)
    {
        result.Add(item);
    }
}

使用 LINQ,卢克!

var result = integers.Where((n, i) =>
    i == 0 ? true : n != integers[i - 1]);

更简洁:

var result = integers.Where((n, i) =>
    i == 0 || n != integers[i - 1]);