如何在c#中复制数组中的所有不同元素

时间:2009-05-02 11:06:29

标签: c# arrays

让我们说像这样的数组:

double [] numbers = new double[] {1,1,2,2,5,7,7,7};

我想以时间有效的方式将不同的数字复制到一个新数组(结果应该是数字= {1,2,5,7})。我知道如何以一种低效的方式做到这一点 - 通过查看下一个数字是否与之前的数字相同并继续复制循环(如果它们)。还有另一种方式吗?

3 个答案:

答案 0 :(得分:7)

using System.Linq;

double[] newArray = numbers.Distinct().ToArray();

答案 1 :(得分:2)

如果您没有Linq,可以执行以下操作:

List<double> uniques = new List<double>;
foreach (double num in numbers)
{
  if (!uniques.Contains(num)) uniques.Add(num);
}

double[] uniquearray = uniques.ToArray();

答案 2 :(得分:1)

显然,有必要检查列表中的每个元素来执行此操作。您描述的“时间效率低下”的方式实际上已经描述了您必须做的事情的基本要素。如果您想要一种方便的方法,Linq已经定义了Distinct()运算符,然后您可以将其与ToArray()结合使用。