.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 }
原文地址:https://www.cnblogs.com/yaopengfei/p/6938545.html