如何删除数组中的重复值?

时间:2012-05-31 15:47:38

标签: c#

  

可能重复:
  Remove duplicates from array

我有一个int数组,其中包含已定义数量的元素,都是正数。我想从这个中获取一个数组,其中所有元素只出现一次。例如如果第一个数组类似{2000,2011,2011,2012,2009,2009,2000},我想得到{2000,2011,2012,2009}。我怎样才能做到这一点?我用for循环尝试了很多东西,但我无法做好事。

4 个答案:

答案 0 :(得分:7)

使用LINQ很容易:

var intArray = new[] { 2000, 2011, 2011, 2012, 2009, 2009, 2000 };
var uniqueArray = intArray.Distinct().ToArray();

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.distinct.aspx

另一种方法是使用Enumerable.GroupBy

uniqueArray = intArray.GroupBy(i => i).Select(grp => grp.Key).ToArray();

答案 1 :(得分:6)

您可以执行以下操作

var yourArray = yourArray.Distinct().ToArray();

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.distinct.aspx

答案 2 :(得分:2)

替代方式:

    int[] _array = new int[] {1, 2, 1,2}
    var myArray = new System.Collections.ArrayList();

    foreach(var item in _array){
        if (!myArray.Contains(item))
            myArray.Add(item);
    }

答案 3 :(得分:0)

除了其他答案之外,您可能需要查看HashSet,特别是如果您事先知道您将有重复值。