2016-03-28 11 views
1

Ich versuche, eine Erweiterungsmethode zu erstellen, die auf einem IEnumerable eines Typen "erweitert", einen Ausdruck als einen Parameter akzeptiert und einen IEnumerable des gleichen Typen zurückgibt.Benutzerdefinierter Ausdruck als Parameter und Rückgabe von IEnumerable des generischen Typs

public static IEnumerable<T> CustomExtension<T>(this IEnumerable<T> cities, Expression<Func<T, bool>> predicate) 
{ 
    return Enumerable.Where(cities, predicate); 
    //the line above is wrong, doesn't compile, but it explains my intentions...   
} 

es dann rufen Sie wie folgt:

var bigCities = cities.CustomExtension(c => c.occupants >= 1000000); 

ODER

var coldCities = cities.CustomExtension(c => c.avgTemp <= 20); 

HINWEIS: Es ist nicht nur für "Stadt" Objekte, ist der Plan, es generisch zu halten so kann ich die gleiche Methode für ähnliche Typen verwenden

Vielen Dank im Voraus ...

+4

Also, was ist falsch mit nur 'Wo' zu verwenden? Auch Ihr Beispiel sollte 'cities.Where (Prädikat)' sein. – DavidG

+1

Sie beschreiben im Wesentlichen die Erweiterungsmethode 'Where'. – Nkosi

+0

Welchen Zweck hat diese Erweiterung? Ich frage, weil aktuell die von Ihnen beschriebene Funktionalität bereits existiert. Gibt es ein zusätzliches Ziel, das Sie erreichen möchten? – Nkosi

Antwort

1
public static IEnumerable<T> CustomExtension<T>(this IEnumerable<T> cities, Func<T, bool> predicate) 
    { 
     return cities.Where(x => predicate(x)); 
    } 
+0

Also, was macht das oben einfach mit 'Wo'? – DavidG

+0

Hey, ich beantworte nur die Fragen. – Jace

+0

Dann schlage ich vor, dass Sie etwas nützliches statt antworten :) – DavidG

Verwandte Themen