2012-05-31 48 views
2

可能重複:
Remove duplicates from array如何刪除數組中的重複值?

我有一個int數組,它包含一個定義的元素數,所有陽性。我想從這個所有元素只出現一次的數組中獲得一個數組。例如如果第一個數組是像{2000,2011,2011,2012,2009,2009,2000},我希望得到這個{2000,2011,2012,2009}。我怎樣才能做到這一點?我用循環嘗試了很多東西,但我無法設法做好一些事情。

回答

6

,你可以做以下

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

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

+0

這隻會創建一個IEnumerable,而不是一個數組。要返回一個新數組,你需要在結果上調用ToArray。例如:'yourArray = yourArray.Distinct()。ToArray();' – Wormbo

+0

我編輯了我的答案,即使它只是給OP正確的方向去 –

+0

請注意,由'Distinct'返回的值不是保證有序。如果你想按值排序,可以使用'yourArray.Distinct()。OrderBy(x => x).ToArray()'。如果保持原始的插入順序很重要,(如你的例子所示),你可能需要一個比較慢的選項,比如Efthimis's(但是我建議'列表'覆蓋'ArrayList',這已經過時了)。 –

0

除了其他的答案,你可能想看看在HashSet,特別是如果你提前知道的時候,你將有重複的值。

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); 
    }