.net MVC 随笔4

来源:互联网 发布:童装淘宝店简介怎么写 编辑:程序博客网 时间:2024/05/18 02:27

函数调用方式

  • 方式1.
 public static decimal TotalPrices(this IEnumerable<Product> products)        {            decimal total = 0;            foreach (Product prod in products )            {                total += prod?.Price ?? 0;            }            return total;        }public static IEnumerable<Product> FilterByPrice(this IEnumerable<Product> productEnum,decimal minimumPrice)        {            foreach (Product prod in productEnum)            {                if((prod?.Price??0)>=minimumPrice)//price !=0&&>=minimumPrice                {                    yield return prod;                }            }        }        public static IEnumerable<Product> FilterByName(this IEnumerable<Product> productEnum,char firstLetter)        {            foreach(Product prod in productEnum)            {                if(prod?.Name?[0]==firstLetter)                {                    yield return prod;                }            }        }
//这里调用了两个函数,一个是判断消费大于20,一个是累加集合。decimal arrayTotal = productArray.FilterByPrice(20).TotalPrices();//这里调用了两个函数,一个是判读首字母是否为S,一个是累加集合。decimal nameFilterTotal = productArray.FilterByName('S').TotalPrices();
  • 方法2
 // this 是prodcut的前置接口,放在.前面        public static IEnumerable<Product> Filter(this IEnumerable<Product> productEnum,Func<Product,bool>selector)        {            foreach(Product prod in productEnum)            {                if(selector(prod))                {                    yield return prod;                }            }        }// 判断函数 价格》=20,返回值bool类型        bool FilterByPrice(Product p)        {            return (p?.Price ?? 0) >= 20;        } //这里调用了两个函数,一个filer,读取filerbyprice的BOOL值,一个是累加集合。 decimal priceFilterTotal = productArray.Filter(FilterByPrice).TotalPrices();//判断函数返回值bool,首字母是SFunc<Product, bool> nameFilter = delegate (Product prod) { return prod?.Name[0] == 'S'; }; //这里调用了两个函数,一个filer,读取namefiler的BOOL值,一个是累加集合。 decimal nameFilterTotal = productArray.Filter(nameFilter).TotalPrices();
  • 方法3
//另一种用法decimal priceFilterTotal = productArray.Filter(p => (p?.Price ?? 0) >= 20).TotalPrices();decimal nameFilterTotal = productArray.Filter(p =>p?.Name?[0]== 'S').TotalPrices();

三种方法实现的效果一样,第一种最易懂,第三种最简洁(难读)。

原创粉丝点击