IEnumerable<Product> products = new ShoppingCart { Products = new List<Product>{ new Product{Name="Kayak",Category="Watersports", Price=275M}, new Product{Name="Life Jackdt",Category="Watersports",Price=48.95M}, new Product{Name="Soccer Ball",Category="Soccer",Price=19.50M}, new Product{Name="Corner Flag",Category="Soccer",Price=34.95M} } };
定义Products集合
在扩展方法中使用委托
public static IEnumerable<Product> Filter(this IEnumerable<Product> productEnum, Func<Product, bool> selectorParam) { foreach (Product prod in productEnum) { if (selectorParam(prod)) { yield return prod; } } }
扩展IEnumerable<Product> 方法,传入委托 Func<Product,bool> selectorParam 参数,如果 Prod 为True,返回Prod 对象
Func<Product, bool> categoryFilter = delegate(Product prod) { return prod.Category == "Watersports"; };
定义 委托 CategoryFilter 方法,判断类型是否为 Watersports.
IEnumerable<Product> filteredProducts = products.Filter(categoryFilter); foreach (Product prod in filteredProducts) { ViewBag.Message += "Name:" + prod.Name + ",Price:" + prod.Price + " "; }
传入CategoryFile 筛选 Products 集合,并输出
浙公网安备 33010602011771号