.net MVC 随笔4

函数调用方式

  • 方式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,首字母是S
Func<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();

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值