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 集合,并输出

 

posted on 2012-08-07 16:53  路边的野猫  阅读(169)  评论(0)    收藏  举报