【问题标题】:How to copy all different elements from an array in c#如何在c#中从数组中复制所有不同的元素
【发布时间】:2009-05-02 11:06:29
【问题描述】:

假设有一个这样的数组:

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

我只想以一种省时的方式将不同的数字复制到一个新数组中(结果应该是数字 = {1,2,5,7})。我知道如何以一种时间效率低下的方式来做到这一点——通过查看下一个数字是否与前一个数字相同,如果是,则继续复制循环。还有其他方法吗?

【问题讨论】:

    标签: c# arrays


    【解决方案1】:
    using System.Linq;
    
    double[] newArray = numbers.Distinct().ToArray();
    

    【讨论】:

    • 我喜欢这个解决方案,但我没有使用 .NET 3.5(也许我应该开始)
    【解决方案2】:

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

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

    【讨论】:

    • 这也涵盖了列表无序的情况。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-06-19
      • 2018-10-29
      • 2021-01-15
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2016-12-08
      • 2012-04-09
      • 1970-01-01
      相关资源
      最近更新 更多