Lambda表达式
简介
符号 =>,读作 goes to
作用 直接使用=>查询,代替foreach或for循环
Lambda表达式是一种匿名函数,Lambda 用在基于方法的 LINQ 查询中,作为诸如 Where 和 Where 等标准查询运算符方法的参数
简单举例
- 返回classcode为1001的list 或1001号学生
List<Student> list1001=StudentList.where
(t=>t.ClassCode='1001').ToList();
Student student1001=StudentList.where
(t=>t.StudentCode='1001');
//也可以用var 定义返回类型
- 返回classcode为1001的list,排序
//从小到大
var list1001=StudentList.where(t=>t.ClassCode='1001').OrderBy(t=>t.BirthDay);
//OrderByDescending(t=>t.BirthDay)从大到小排列
- 表内联合查询
var list1001=StudentList.Where(t=>(t.ClassCode=="1001"&&t.StudentName.StartWith(“John"))
.OrderBy(t=>t.BirthDay);
- 跨表联合查询
var list1001=StudentList.Where(t=>(t.ClassCode=="1001")
&&(scoreList.Exists(p=>p.ScoreValue<60
&&p.StudentCode==t.studentCode)));
用lambda表达式简化委托
delegate int LambdaTest(int a, int b);
static void Main(string[] args)
{
var total = (double)16.2;
Console.WriteLine($"Declared Type: {total.GetType().Name},Value:{total}");
Func<int, int, int> Add = (x, y) => x + y;//匿名函数,Func<int 参数1,int 参数2, int 返回值>
Console.WriteLine(Add(2, 3));
LambdaTest lt = (p, z) => z - (p + 10);//委托函数
Console.WriteLine(lt(20, 90));
Func<string> ZeroP = () => "0个参数";//0个参数用法
Console.WriteLine(ZeroP());
Func<int,string> OneP = x => string.Format("1个参数:{0}",x);//1个参数用法,可以省略括号
Console.WriteLine(OneP(5));
Func<int, int, int> TwoP = (x, y) => x + y;//两个参数用法
Console.WriteLine(TwoP (2, 3));
Func<int, string> MarkP = x => { x++; return string.Format("1个参数:{0}", x); };//1个参数用法,两行语句要有{ }和 return; Func<int 参数,string 返回值>
Console.WriteLine(OneP(5));
Console.ReadKey();
}