2016-03-28 6 views
1

タイプのIEnumerableで「拡張」する拡張メソッドを作成しようとしています。式をパラメータとして受け取り、同じタイプのIEnumerableを返します。パラメータとしてカスタム式を返し、汎用タイプのIEnumerableを返す

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...   
} 

そして、そのようにそれを呼び出す:

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

OR

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

注:それはちょうど "都市" オブジェクトのために、計画は一般的な、それを維持することですされていません同じようなタイプの同じメソッドを使用することができます

ありがとうございます事前に...

+4

「Where」を使用すると何が問題になりますか?また、あなたの例は 'cities.Where(述語)'でなければなりません。 – DavidG

+1

基本的に 'Where'拡張メソッドについて説明しています。 – Nkosi

+0

この拡張の目的は何か。私は現在あなたが説明している機能がすでに存在しているので尋ねます。あなたが達成しようとしているいくつかの追加の目標はありますか? – Nkosi

答えて

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

これは単に 'Where'を使って上記のことをしていますか? – DavidG

+0

ねえ、私は質問に答えます。 – Jace

+0

それから代わりに何か役に立つ答えをお勧めします:) – DavidG

関連する問題