2009-08-18 2 views
1

델리게이트를 사용하는 방법을 이해하고 있으며, 람다 식에서도 술어를 사용할 수 있습니다. 내가 원하는어떻게 술어를 사용하여 일치 알고리즘을 구현합니까?

private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match) 
{ 
    foreach (T item in collection) 
    { 
     //So how do I reference match to return the matching item? 
    } 
    return default(T); 
} 

에 : 나는 인수로 술어를 사용하는 방법을 구현하려는 내 컬렉션의 일치를 찾기 위해 술어를 참조하는 방법을 알아낼 수 없습니다 지점으로 왔어요 다음에 가깝다이 사용하는 것을 참조 : 누군가가 나에게 설명을 제공하거나 술어의 구현에 대한 참조를 날 지점 수 있다면

ICollection<MyTestClass> receivedList = //Some list I've received from somewhere else 
MyTestClass UsefulItem = FindInCollection<MyTestClass>(receivedList, i => i.SomeField = "TheMatchingData"); 

을, 나는 그것을 감사하겠습니다. 모든 사실을 사용하는 기능을 구현하지, (내가 잘 할 수있는) 조건을 통과와 관련하는 문서는 거기 당신은 그냥 같이 술어를 사용

감사

+0

Where 메서드를 사용할 수없는 이유는 무엇입니까? –

+0

@ 카메론 : D' oh! 내가 System.Linq를 참조하지 않았기 때문에 내가 그것을 사용할 수 없었던 이유가있다. 하하! 나는 그것을 사용할 수있을 거라 생각했지만 intellisense에 나타나지 않았다. 좀 더 자야 해. LOL, 고마워. – BobTheBuilder

+0

@Cameron : 구현할 수있는 것이 항상 유용하기 때문에 응답은 제공되지만 불필요한 것은 다른 상황에서도 사용할 수 있습니다. – BobTheBuilder

답변

7
private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match) 
{ 
    foreach (T item in collection) 
    { 
     if (match(item)) 
      return item; 
    } 
    return default(T); 
} 

... 보인다 다른 대표자. 이것은 기본적으로 타입 T의 인자로 호출 할 수있는 메소드입니다.이 메소드는 true를 반환합니다.

+0

고마워요,이 퍼즐에 대한 정보를 찾을 수 없었습니다. 신속한 대응에 감사드립니다! +1 – BobTheBuilder