Funktionen/Methoden schreiben ist einfach. Paramter übergeben auch. Schon mal eine Methode definiert die indirekt “Code” (einen Predicate<T>) als Parameter übernimmt? Mithilfe eines Predicate<T> ermöglichen Sie die übergabe eines Delegates und schaffen somit die Möglichkeit Ihre eigene dynamischen (strongly Typed) Filter zu erstellen. Wie kanns aussehen? Zuerst die Funktion definieren die einen Predicate<T> als Paramter nimmt:
1: public static class Demo1
2: {
3: public static List<Demo> GetDemos(Predicate<Demo> p)
4: {
5: var lst = GetList(); //Ladet eine Liste die gefiltert werden soll
6: foreach (v i in lst)
7: {
8: if (p(i))
9: yield return i;
10: }
11: }
12: }
Aufruf:
1: var lst = Demo1.GetDemos(
2: delegate(Demo d)
3: {
4: return (d.Active && d.Name == "Test");
5: }
6: );
Und somit sollten auch die Technolgien die hinter LINQ stecken wieder etwas verständlicher werden.