2016-03-28 29 views
1

Bir tür bir IEnumerable "genişletir" bir uzantı yöntemi oluşturmaya çalışıyorum, bir ifade olarak bir ifade kabul eder ve aynı tür bir IEnumerable döndürür.Özel İfade parametre olarak döndürme ve döndürme IE1umunabilir genel tür

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

Sonra şöyle diyoruz:

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

VEYA

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

NOT: Sadece "şehir" nesneler için değil, planı jenerik bunu tutmaktır Bu nedenle aynı yöntemi aynı türlerde kullanabilirim

Şimdiden teşekkürler ...

+4

Sadece neyi kullanmakta sorun var? Ayrıca sizin örnekleminiz de “şehirler” olmalıdır. Orada (yüklem). – DavidG

+1

Temel olarak 'Where' uzantısı yöntemini açıklıyorsunuz. – Nkosi

+0

Bu uzantının amaçlanan amacı nedir? Soruyorum çünkü halihazırda açıkladığınız işlevsellik zaten var. Başarmaya çalıştığınız bazı ek hedef var mı? – Nkosi

cevap

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

Öyleyse, bunun anlamı sadece 'Where' kullanılarak yapılmakta? – DavidG

+0

Hey, sadece soruları cevapladım. – Jace

+0

O zaman size yararlı bir şey cevap öneririm :) – DavidG

İlgili konular