前言
1、天真热,程序员活着不易,星期天,今天北京天气真热,在家开空调写一些东西。
2、写一些lambda的使用吧:简化了匿名委托的使用,让你让代码更加简洁,优雅。
lambda简介
Lambda表达式实际上是一种匿名函数,在Lambda表达式中可以包含语句以及运算等操作。并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。使用Lambda表达式可大大减少代码量,使得代码更加的优美、简洁,更有可观性。
lambda运算符:所有的lambda表达式都是用新的lambda运算符 \” => \”,可以叫作,“转到”或者 “成为”。运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。
lambda表达式:
1.一个参数:param=>expr
2.多个参数:(param-list)=>expr
日常使用
实体创建
[code]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; }}
赋值
[code]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;}
使用示例
[code] 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();
附加:
[code]//附加使用 捕获外部变量int factor = 2;Func<int, int> multiplier = n => n * factor;MessageBox.Show(multiplier(2).ToString());