Я понимаю, как использовать делегатов, и я в порядке с лямбда-выражениями, чтобы использовать предикаты. Я пришел к точке, где я хочу, чтобы реализовать метод, который использует предикат в качестве аргумента и не могу понять, как ссылаться на предикат, чтобы найти спички в моей коллекции:Как реализовать алгоритм соответствия с использованием предикатов?
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: D'oh! причина, по которой я не мог ее использовать, - это потому, что я не ссылался на System.Linq, ха-ха! Я думал, что смогу использовать его, но он не появился в intellisense. Мне нужно больше спать. Лол спасибо. – BobTheBuilder
@Cameron: Хотя это всегда полезно для реализации, поэтому предоставленный ответ - в то время как лишние теперь могут по-прежнему обеспечивать использование в других ситуациях. – BobTheBuilder