.Net进阶系列(4)-Lambda和linq入门(被替换)
一. Lambda和linq入门
lambda表达式又叫点标记,linq表达式又叫查询表达式,下面有三个简单的案例说明一下二者的基本用法,详细用法会在后续章节中更新。
二. 事例
1. 准备学生信息。
1 List<Student> studentList = new List<Student>() 2 { 3 new Student() 4 { 5 Id=1, 6 Name="打兔子的猎人", 7 ClassId=2, 8 Age=35 9 }, 10 new Student() 11 { 12 Id=1, 13 Name="Alpha Go", 14 ClassId=2, 15 Age=23 16 }, 17 new Student() 18 { 19 Id=1, 20 Name="白开水", 21 ClassId=2, 22 Age=27 23 }, 24 new Student() 25 { 26 Id=1, 27 Name="狼牙道", 28 ClassId=2, 29 Age=26 30 }, 31 new Student() 32 { 33 Id=1, 34 Name="Nine", 35 ClassId=2, 36 Age=25 37 }, 38 new Student() 39 { 40 Id=1, 41 Name="Y", 42 ClassId=2, 43 Age=24 44 }, 45 new Student() 46 { 47 Id=1, 48 Name="小昶", 49 ClassId=2, 50 Age=21 51 }, 52 new Student() 53 { 54 Id=1, 55 Name="yoyo", 56 ClassId=2, 57 Age=22 58 }, 59 new Student() 60 { 61 Id=1, 62 Name="冰亮", 63 ClassId=2, 64 Age=34 65 }, 66 new Student() 67 { 68 Id=1, 69 Name="瀚", 70 ClassId=2, 71 Age=30 72 }, 73 new Student() 74 { 75 Id=1, 76 Name="毕帆", 77 ClassId=2, 78 Age=30 79 }, 80 new Student() 81 { 82 Id=1, 83 Name="一点半", 84 ClassId=2, 85 Age=30 86 }, 87 new Student() 88 { 89 Id=1, 90 Name="小石头", 91 ClassId=2, 92 Age=28 93 }, 94 new Student() 95 { 96 Id=1, 97 Name="大海", 98 ClassId=2, 99 Age=30 100 }, 101 };
2. 查找年龄小于30岁的学生
lambda代码如下:
1 { 2 //1.查找年龄小于30岁的学生 3 List<Student> students = studentList.Where<Student>(u => u.Age < 30).ToList(); 4 }
linq代码如下:
1 { 2 //1.查找年龄小于30岁的学生 3 List<Student> students = (from a in studentList 4 where a.Age < 30 5 select a 6 ).ToList(); 7 }
3. 部分字段查找测试(利用匿名类),按条件转换
lambda代码如下:
1 { 2 //2.部分字段查找测试(利用匿名类),按条件转换 3 var sInfor = studentList.Where(u => u.Age < 30).Select(u => 4 new 5 { 6 Cid = u.Id + u.Name, 7 ClassName = u.ClassId == 2 ? "高级班" : "幼儿班" 8 } 9 ); 10 }
linq代码如下:
1 { 2 //2.部分字段查找测试(利用匿名类),按条件转换 3 var sInfor = from a in studentList 4 where a.Age < 30 5 select new 6 { 7 Cid = a.Id + a.Name, 8 ClassName = a.ClassId == 2 ? "高级班" : "幼儿班" 9 }; 10 }
4. 排序和分页(linq暂不支持分页,后续更新)
lambda代码如下:
{ //3. 排序和分页 var sInfor = studentList.Where(u => u.Age < 30) .OrderBy(u => u.Id) .Skip(2) .Take(3) .Select(u => new { Cid = u.Id + u.Name, ClassName = u.ClassId == 2 ? "高级班" : "幼儿班" } ); }
linq代码如下:
1 { 2 //3. 排序和分页(暂无分页) 3 var sInfor = from a in studentList 4 where a.Age < 30 5 orderby a.Id 6 select new 7 { 8 Cid = a.Id + a.Name, 9 ClassName = a.ClassId == 2 ? "高级班" : "幼儿班" 10 }; 11 12 }