• .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 }
  • 相关阅读:
    看看时间,我的博客都有一年了。
    asp.net 读取数据库生成百度sitemap_baidu.xml和谷歌sitemap.xml
    克隆后自动改IP计算机名的批处理
    网奇iwms插件之“我浏览过的文章”
    Jetty7 Continuation 学习(一)
    PostgreSQL 和 MySQL 创建帐号,数据库,权限
    OpenLayers 学习笔记 (3) 使用 Google Maps 作底图
    Tomcat 和 Jetty 下 JNDI 配置 DBCP 连接池
    PostgreSQL 中 POLYGON 到 MULTIPOLYGON 的转换
    CentOS 5.4 安装 DNS
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/6938545.html
Copyright © 2020-2023  润新知