2013-02-27 2 views
2

개체 배열이 있는데 특정 길이 뒤에 모든 항목을 제거하려면C# 특정 길이의 배열에서 항목을 제거하는 방법?

예를 들어 배열의 시작 길이가 10이고 배열의 처음 5 개 항목 만 유지하고 모든 항목을 제거하려면 그 후. 참고 : 배열은 5보다 작을 수 있습니다.

int startLength = 10; 
    int maxLength = 5; 
    List<MYObject> myList = CreateListofObjects(startLength); 

나는 "RemoveAfter는"같은 것을 할 것 "RemoveAfter"같은 것을 원하는 :

myList = myList.RemoveAfter(maxLength); 

    Assert.IsTrue(myList.Count() ==5); 
+2

사이드 참고 : 제목은 "배열"라고,하지만 당신은'List'을 조작 할 수 있습니다. 또한 List를 유지할 필요가 있는지 또는 새로운 인스턴스가 괜찮은지 명시하지 않았으므로 두 선택 사항 (Mitch Wheat 's 및 Serdalis ', 각각 +1)을 포함하는 2 개의 대답을 가질 수 있습니다. –

답변

7
myList = myList.Take(maxLength).ToList(); 

[참고 : 이것은 우리가 원래 목록에 할당 할 새 목록을 생성 원래 목록을 변경하지 않고 자리 표시 자 (myList)를 사용합니다. ]

+0

이것은 기존 컬렉션을 변경하지 않고 새로운 시퀀스/컬렉션을 생성한다는 점에 유의하십시오. – Servy

2

TakeToList

myList = myList.Take(maxLength).ToList(); 

를 (또한 새 목록을 만들 것입니다) 작업을 할 수 있습니다 그리고 당신은 목록을 유지해야하는 경우 - RemoveRange도있다 :

myList.RemoveRange(maxLength, myList.Count - maxLenght); 

참고 : 확인 list가 maxLength보다 항목 수가 적을 경우 샘플이 작동합니다.

2

당신은 RemoveRange

예를 찾고 있습니다 :

if(myList.Count() > maxLength) { 
    myList.RemoveRange(maxLength, (mylist.Count()-maxLength)); 
} 
+0

목록이 너무 짧으면 ArgumentOutOfRangeException이 발생합니다. – Tim

+0

@ 물론, 목록이 maxLength보다 작은 지 확인하십시오. – Serdalis

관련 문제