将数组中的重复项堆栈减少为 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]);
我直接拿走: 例如我有一个数组
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]);