gpt4 book ai didi

c# - 使用 LINQ 删除列表中的重复内容?

转载 作者:行者123 更新时间:2023-11-30 19:08:44 24 4
gpt4 key购买 nike

假设我有这个列表:

int[] list = { 1, 2, 3, 3, 1 };

我想要的是删除紧跟在同一数字后面的重复项。所以在这种情况下,我想删除 3 个,而不是 1 个。

因此,新列表应为:{1, 2, 3, 1}

另一个例子是这个列表:{2, 7, 7, 7, 2, 6, 4}这将成为 {2, 7, 2, 6, 4} .

我可以用 LINQ 做到这一点吗?

最佳答案

如果您想使用现有的 LINQ 方法,您可以使用 Aggregate,但这种方法会失去惰性。您可以编写自己的扩展方法:

public static IEnumerable<T> RemoveConsecutiveDuplicates<T>(this IEnumerable<T> source, IEqualityComparer<T> comp = null)
{
comp = comp ?? EqualityComparer<T>.Default;

using (var e = source.GetEnumerator())
{
if (e.MoveNext())
{
T last = e.Current;
yield return e.Current;

while (e.MoveNext())
{
if (!comp.Equals(e.Current, last))
{
yield return e.Current;
last = e.Current;
}
}
}
}
}

关于c# - 使用 LINQ 删除列表中的重复内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44740066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com