返回唯一值而不删除重复项-C#

本文关键字:-C# 删除 唯一 返回 | 更新日期: 2023-09-27 18:26:08

我知道在删除重复项后返回数组中的唯一值有很多答案,但删除重复项之后数组中的每个元素不是都是唯一的吗?在删除任何重复项之前,我希望只返回唯一的值。如果元素在原始数组中重复,我不希望它出现在我的最终数组中。

所以这个数组。。。

[0, 1, 1, 2, 3, 3, 3, 4]

应仅返回:

[0, 2, 4]

另一种表达方式是删除所有重复项以及所有曾经重复的唯一值。

我来自JavaScript背景,对C#语法仍然有点不稳定。:)

返回唯一值而不删除重复项-C#

最简单的方法是使用LINQ,按值分组,计算每组中的元素数量,然后返回具有单个值的组的密钥:

var singleOccurrences = array.GroupBy(x => x)
                             .Where(g => g.Count() == 1)
                             .Select(g => g.Key)
                             .ToArray();

如果您真的需要这对大输入有效,那么您可以编写自己的方法,将"具有单个值的元素"answers"具有多个值的元素"作为集合进行跟踪。不过,我还是从这个开始:)

您可以使用GroupBy方法

var uniqueNumbers = numbers.GroupBy(x => x)
                   .Where(x => x.Count() == 1)
                   .Select(g => g.Key)
                   .ToArray();

这将基本上对所有数字进行分组,然后取其中有一个数字的组。