在c#中将数组中重复的堆栈减少到只有一个

时间:2016-04-27 14:13:11

标签: c# arrays distinct

我直接接受: 例如,我有一个数组

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

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

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

我读到了.Distinct()方法和各种比较器,但该方法删除了所有相同的元素,我不想这样做。我仍然认为应该通过Linq或somethig来做某种方法。谢谢!

2 个答案:

答案 0 :(得分:1)

使用LINQ,Luke!

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]);

答案 1 :(得分:0)

我认为.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);
    }
}