2012-04-23 2 views
3

나는 다음을 가지고있다 : List<InputRow>에는 많은 InputRow 객체가있다.람다 함수를 사용하여 이전 목록에서 새 목록 만들기

원래 목록에 람다 함수를 사용하여 모든 목록에 InputRow.someProperty > 1 새 목록을 제공하는 방법이 있는지 궁금합니다.

이 InputRow의 목록이 날 떠나 것이다는 1보다 모두 가진 someProperty 큰 객체

+0

[LINQ를 사용하여 목록 내의 개체를 제거 할 수 있습니다] (http://stackoverflow.com/questions/853526/using-linq-to-remove-objects-within-a-listt) –

답변

6

당신은 LINQ합니다 (.Where().ToList() 확장 방법을 함께) 사용할 수 있습니다

List<InputRow> originalList = ... 
List<InputRow> filteredList = originalList 
    .Where(x => x.someProperty > 1) 
    .ToList(); 
+0

RemoveAll '을 사용하면 목록을 삭제하고 다시 만들 수 없습니다. – Servy

+0

@Servy Baxter는 그 결과를 제거하지 않기를 원합니다 –

+0

@Servy RemoveAll의 사용법을 자세히 설명해 주시겠습니까? 나는 RemoveAll이 1보다 작거나 같다고 말하기 위해 문장을 뒤집을 수있다. 나는 그 구문이 무엇인지 확실하지 않다. – Baxter

2
List<InputRow> newlist = oldlist.Where(x => x.someProperty > 1).ToList(); 

그러면 이전 목록이 someProperty > 1이고 검색 결과가 목록으로 변환됩니다. .ToList()

3

물론입니다. 이 작업을 수행 할 수 있습니다

var newList = inputRowList.Where(inputRow => inputRow.someProperty > 1).ToList(); 
7

당신은 물론이 작업을 수행 할 수 있습니다 새 목록을 만드는 대신 장소에서 항목을 제거

var list = new List<string>(){ "a", "b", "c" }; 

list.RemoveAll(s => s == "b"); 

합니다.

관련 문제