C# 如何使用谓词实现匹配算法?

C# 如何使用谓词实现匹配算法?,c#,generics,predicate,C#,Generics,Predicate,我了解如何使用委托,并且我对lambda表达式使用谓词没有意见。我现在想实现一个使用谓词作为参数的方法,但却不知道如何引用谓词来查找集合中的匹配项: private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match) { foreach (T item in collection) { //So how do I referenc

我了解如何使用委托,并且我对lambda表达式使用谓词没有意见。我现在想实现一个使用谓词作为参数的方法,但却不知道如何引用谓词来查找集合中的匹配项:

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);
}
private static T FindInCollection(ICollection集合,谓词匹配)
{
foreach(集合中的T项)
{
//那么如何引用match来返回匹配项呢?
}
返回默认值(T);
}
然后,我想使用类似于以下内容的内容来引用:

ICollection<MyTestClass> receivedList = //Some list I've received from somewhere else
MyTestClass UsefulItem = FindInCollection<MyTestClass>(receivedList, i => i.SomeField = "TheMatchingData");
ICollection receivedList=//我从其他地方收到的一些列表
MyTestClass UsefulItem=FindCollection(receivedList,i=>i.SomeField=“MatchingData”);
如果有人能给我一个关于谓词实现的解释或参考,我将不胜感激。那里的文档似乎都与传递谓词有关(我可以做得很好),而不是实际实现使用它们的功能

感谢

私有静态T FindInCollection(ICollection集合,谓词匹配)
{
foreach(集合中的T项)
{
如果(匹配(项目))
退货项目;
}
返回默认值(T);
}
您只需像其他委托一样使用谓词。它基本上是一个方法,您可以使用类型为T的任何参数调用,该参数将返回true。

private static T FindInCollection(ICollection collection,谓词匹配)
{
foreach(集合中的T项)
{
如果(匹配(项目))
退货项目;
}
返回默认值(T);
}

您只需像其他委托一样使用谓词。这基本上是一个方法,你可以用类型为T的任何参数调用它,它将返回true。

谢谢你,我只是找不到关于这个简单的拼图缺失部分的任何信息。感谢您的迅速回复+谢谢你,我只是找不到关于这个简单的拼图缺失部分的任何信息。感谢您的迅速回复+1为什么你不能使用Where方法?@Cameron:D'oh!我不能使用它的原因是因为我没有引用系统。林克,哈哈!我想我可以用它,但它没有出现在智能意义上。我得多睡一会儿。哈哈,谢谢。@Cameron:不过,能够实现总是很有用的,所以提供了答案-虽然现在多余,但在其他情况下可能仍然有用。为什么不能使用Where方法?@Cameron:D'oh!我不能使用它的原因是因为我没有引用系统。林克,哈哈!我想我可以用它,但它没有出现在智能意义上。我得多睡一会儿。哈哈,谢谢。@Cameron:不过,能够实现总是很有用的,所以提供了答案——虽然现在多余,但在其他情况下可能仍然有用。
private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match)
{
    foreach (T item in collection)
    {
        if (match(item))
            return item;
    }
    return default(T);
}