2012-05-31 3 views
2

가능한 중복 :
Remove duplicates from array배열에서 중복 값을 삭제하는 방법은 무엇입니까?

I는 모든 긍정적 요소 정의 된 번호를 포함 int 배열을 갖는다. 모든 요소가 한 번만 나타나는이 배열을 얻고 싶습니다. 예 : 첫 번째 배열이 {2000,2011,2011,2012,2009,2009,2000} 인 경우이 값을 얻고 싶습니다. {2000,2011,2012,2009}. 어떻게해야합니까? 나는 루프를 가지고 많은 것을 시도했지만 좋은 일을 할 수 없었다.

답변

6

아래의 작업을 수행 할 수 있습니다 그것은 쉽게 :

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(); 
+0

출력을 보면 알 수 있듯이 중요하지 않습니다. 감사합니다. 그것은 작동합니다! – Cippo

6

당신은 LINQ와 함께

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와 같은 더 느린 옵션을 사용하고 싶을 수도 있습니다 (그러나 오래된 ArrayList보다는'List '을 권합니다). –

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); 
    } 
관련 문제