C# lambda表达式使用

前言

        1、天真热,程序员活着不易,星期天,今天北京天气真热,在家开空调写一些东西。

        2、写一些lambda的使用吧:简化了匿名委托的使用,让你让代码更加简洁,优雅。

lambda简介

       Lambda表达式实际上是一种匿名函数,在Lambda表达式中可以包含语句以及运算等操作。并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。使用Lambda表达式可大大减少代码量,使得代码更加的优美、简洁,更有可观性。

     lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫作,“转到”或者 “成为”。运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。

        lambda表达式:

               1.一个参数:param=>expr

               2.多个参数:(param-list)=>expr

日常使用

实体创建

public class PatInfo
    {
        /// <summary>
        /// 患者ID
        /// </summary>
        public string PatID { get; set; }
        /// <summary>
        /// 患者姓名
        /// </summary>
        public string PatName { get; set; }
        /// <summary>
        /// 患者年龄
        /// </summary>
        public int PatAge { get; set; }
        /// <summary>
        /// 科室
        /// </summary>
        public string DeptCode { get; set; }
        /// <summary>
        /// 费用
        /// </summary>
        public decimal PatCosts { get; set; }
        /// <summary>
        /// 地址
        /// </summary>
        public string PatAddress { get; set; }
        /// <summary>
        /// 手机号
        /// </summary>
        public string PatPhoneNo { get; set; }

    }

赋值

public static List<PatInfo> PatInfoList()
        {
            List<PatInfo> patInfo = new List<PatInfo>();
            for (int i = 0; i < 10; i++)
            {
                PatInfo p = new PatInfo()
                {
                    PatID = "M00000000" + i,
                    PatName = i + "患者",
                    PatAge = i + 25,
                    //DeptCode = "2020" + i,
                    DeptCode="20201",
                    PatCosts = 1000 + i,
                    PatAddress = "北京" + i,
                    PatPhoneNo = "1820000111" + i
                };
                patInfo.Add(p);
            }
            return patInfo;
        }

使用示例

            List<PatInfo> patInof = PatInfoList();
            //FirstOrDefault返回第一个符合条件的数据,不存在的时候返回Null。
            var a = patInof.FirstOrDefault(t => t.DeptCode == "20201");
            //返回符合条件的实体个数
            var b = patInof.Count(t => t.PatID == "M000000005");
            //查找所有名字中含有【患者】集合
            var c = patInof.FindAll(t => t.PatName.Contains("患者"));
            //对PatInfoList按照DeptCode分组
            var d = patInof.GroupBy(t => t.DeptCode);
            //返回最大年龄。
            var f = patInof.Max(t => t.PatAge);
            //对所有费用求和
            var ee = patInof.Sum(t => t.PatCosts);
            //对所有费用求平均值
            var g = patInof.Average(t => t.PatCosts);
            //获取所有患者姓名,并去除重名
            var h = patInof.Select(t => t.PatName).Distinct();
            //所有Age>30的 PatInfo 的集合
            var pp = patInof.Where(p => p.PatAge > 30).ToList();
            //Age=31的单个 PatInfo实体 
            var pInfo = patInof.SingleOrDefault(p => p.PatAge == 31);
            //所有Name包含患者的 PatInfo 的集合
            var ppp = patInof.Where(p => p.PatName.Contains("患者")).ToList();

附加:

            
            //附加使用 捕获外部变量
            int factor = 2;
            Func<int, int> multiplier = n => n * factor;
            MessageBox.Show(multiplier(2).ToString());

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aries·Zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值