2017-03-04 3 views
0

개체 목록이 List<Points>이고 각 개체 (점)에 x, y 및 z와 같은 일부 속성이 있습니다. (Points.x, Points.y, Points.z은 두 배입니다. 몇 가지 조건이있는 개체를 삭제하고 싶습니다. 예를 들어 x < = 5, 6 < = y < 10, z < 인 개체는 삭제해야합니다. 어떻게해야합니까?조건부로 목록에서 항목 제거

감사

+1

검색 다른 사용에서 removeAll 방법을 사용할 수 있습니다 'LINQ To Obj를위한 ects' 코드가 예상대로 작동하지 않으면 다시 방문하십시오. –

+3

'points.RemoveAll (point => point.X <= 5 && point.Y <= 6 ...)' – sed

답변

0

당신은 RemoveAll 방법과 같이 사용할 수 있습니다

list.RemoveAll(p => p.x <= 5 && p.y >= 6 && p.y < 10 && p.z < 20); 
+1

RemoveAll은 Linq와 관련없는 메소드 목록입니다 –

+0

맞습니다. Ty –

0

당신은 Linq에

var pointList = new List<Point>(); 

    pointList = pointList.Where(p => 
       !((p.X <= 5) && (p.Y > 6 && p.Y < 10) && (p.Z < 20))) 
       .ToList(); 

또는 목록 개체

pointList.RemoveAll(p => (p.X <= 5) && (p.Y > 6 && p.Y < 10) && (p.Z < 20)); 
+0

감사합니다. 'List Points = 새로운 List ();'. 사실 저는이 방법으로 목록을 정의했습니다 (ActivePoints는 Points가 정의 된 클래스 임). 각 Points에는 x, y 및 z가 있습니다. 'p =>'의 의미가 무엇인지 알 수 있습니까? 다음과 같이 코드를 작성해야합니까? 'OpenPoints.RemoveAll (p => px <= 5 && p.y > = 6 && py <10 && pz <20); –

+0

p =>는 람다 식 https://msdn.microsoft.com/en-us/library/bb397687.aspx입니다. ? f = 255 & MSPPError = -2147217396 –

+0

OpenPoints가 모든 지점 개체를 경합하면 RemoveAll은 지정된 조건부에 정의 된 조건과 일치하는 모든 개체를 제거합니다 .https : //msdn.microsoft.com/en-us/library/wdka673a (v = vs.110) .aspx @KatatoniaSh –