繁体   English   中英

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

[英]How do I implement a matching algorithm using predicates?

我知道如何使用委托,并且可以使用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);
}

然后,我想使用类似于以下内容的方式引用它:

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

如果有人可以给我一个解释或为我提供有关谓词实现的参考,我将不胜感激。 那里的文档似乎都与传递谓词有关(我可以做得很好),而不是实际实现使用谓词的功能...

谢谢

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM