前言
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());