在C#中有效地找到2-dim数组T [] []中的唯一元素

时间:2013-04-04 17:42:25

标签: c# multidimensional-array unique distinct-values

提取唯一值的一种解决方案是将Array[i].Distinct()应用于每一行,然后形成每行中所有唯一元素的列表。然后我们可以重复此列表List.Distinct()

但是如何从T[] UniqueValues创建T[][] Data更有效?感谢

1 个答案:

答案 0 :(得分:2)

var distinct = array.SelectMany(a => a).Distinct().ToArray();

这简单地将嵌套数组展平为一个序列,并调用Distinct来查找不同的元素。对ToArray的调用可能有些低效,因为事先不知道不同序列的长度。如果只有少量不同的元素,这不太可能成为问题。

如果您有一个大型输入数组,复制元素可能会更快,将元素复制到一个新数组中,执行基数排序,然后在跳过相同元素的同时迭代排序数组。