【发布时间】:2009-08-18 23:02:02
【问题描述】:
我了解如何使用委托,并且可以使用 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");
如果有人能给我解释或指出有关谓词实现的参考,我将不胜感激。那里的文档似乎都与传递谓词有关(我可以做得很好),而不是实际实现使用它们的功能......
谢谢
【问题讨论】:
-
为什么不能使用Where方法?
-
@Cameron:天哪!我无法使用它的原因是因为我没有引用 System.Linq,哈哈!我以为我可以使用它,但它没有出现在智能感知中。我要多睡一会儿。大声笑,谢谢。
-
@Cameron:虽然,能够实现总是有用的,所以提供的答案 - 虽然现在多余,但在其他情况下可能仍然有用。