2017-11-14 1 views
2

먼저, 다른 propetries와 함께 일부 개체로 목록을 채운 후이 목록에서 부적절한 개체를 모두 제거하고 싶습니다. 확실히, 목록이 수정되었고 열거 형 문제가 발생한다는 예외가 throw됩니다. 이것을 관리하고 부적절한 객체를 제거하는 방법 (예 : ListFiltred, 모든 적절한 객체를 추가 할 수있는 방법)목록 내에서 필터링

MyList.Add(new Houses() { Number = "04" }); 
MyList.Add(new Houses() { Number = "01" }); 
MyList.Add(new Houses() { Number = "02" }); 
MyList.Add(new Houses() { Number = "04" }); 
MyList.Add(new Houses() { Number = "04" }); 
foreach (var item in MyList) 
{ 
    if (item.Number != "04") 
    { 
     MyList.Remove(item); 
    } 
} 
+3

사용 LINQ를'Where' 한 줄'var에 고해상도에서 그것을 수행하는 방법 = MyList.Where (I => I = = "04"). ToList()' – dcg

+1

'foreach'를 사용하여 반복하면서 목록을 수정할 수는 없습니다. @ dcg와 마찬가지로 LINQ를 사용해야합니다. – maccettura

+0

@dcg : OP가 원하지 않는 다른 목록을 사용합니다. 운 좋게도 LINQ 방식보다 나은 성능을 제공한다고 가정하는 조건부에 정의 된 모든 것을 제거하는 List에 대한 메소드가 있습니다. 이야기의 도덕 - 이미 LINQ로 돌아 가기 전에 원하는 것을 할 수있는 방법이 있는지 확인하십시오. – Chris

답변

10

List<T> 술어 걸리는 RemoveAll 방법이있다. 당신은 다음과 같이 사용할 수 있습니다 :

MyList.RemoveAll(x=>x.Number != "04"); 
+0

예,이 기능이 작동했습니다. 고맙습니다 –