自定义表达式作为参数并返回通用类型的 IEnumerable

Custom Expression as parameter and returning IEnumerable of generic type

我正在尝试创建一个扩展方法,该方法 "extends" 在类型的 IEnumerable 上,接受表达式作为参数,并且 returns 类型的 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);

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

注意: 它不仅仅适用于 "city" 对象,计划是保持它的通用性,这样我就可以在相似类型上使用相同的方法

提前致谢...

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