2010-07-08 7 views
1

목록에서 FindAll 메서드를 찾을 수 없습니다. 이전 반복 메서드를 사용하지 않고 특정 조건에 응답하는 목록에서 개체를 선택하려면 어떻게해야합니까?목록에서 findall <T>

List<oPage> mylist = new List<oPage>(); 

my oPage 클래스에는 Title string이라는 제목의 속성이 있습니다.

myList 내에 oPage의 몇 가지 항목을 추가했습니다.

이제 'abc'라는 단어가 포함 된 제목이있는 mylist 내부의 모든 항목을 선택하고 IEnumerable에서 해당 항목을 모두 반환하려고합니다.

어떻게 가능합니까?

도움 주셔서 감사합니다.

+4

어떤 프로그래밍 언어로 제공됩니까? – pakore

+0

어떤 .NET Framework 버전을 사용하고 있습니까? – GenericTypeTea

답변

6

당신이 .NET 3.5 이상을 사용하는 경우, 당신은 LINQ는

mylist.Where(p => p.Title.Contains("abc")); 
2

findall은 방법이 List 반환 단지 그렇게하는 데 사용할 수있는,하지만 당신은 단지 IEnumerable<oPage>에 결과를 캐스팅 할 수 있습니다

List<oPage> mylist = GetYourList(); 

IEnumerable<oPage> results = (IEnumerable<oPage>)myList.FindAll(
    delegate(oPage p) 
    { 
     return p.Title.Contains("abc"); 
    } 
); 
+1

예, 정확하게. C# 3.0 이상을 사용하는 경우에는 간결성을 위해 익명의 대리자가 아닌 람다 식을 사용하십시오. – Noldorin

관련 문제