zoukankan      html  css  js  c++  java
  • LINQ、Lambda与委托

     首先定义个Person类:

    1 public class Person
    2 {
    3  public string Name{get;set;} //姓名
    4  public int Age{get;set;} //年龄
    5 }

    定义好List,并添加几条数据:

    1 List<Person> lstPerson=new List<Person>();
    2 
    3 lstPerson.Add(new Person(){Name="Amy",Age=16});
    4 
    5 lstPerson.Add(new Person(){Name="Jerry",Age=26});
    6 
    7 lstPerson.Add(new Person(){Name="Tom",Age=18});
    8 
    9 lstPerson.Add(new Person(){Name="Bill",Age=18});

     写linq查询或lambda查询:

      var linq = from item in lstPerson
             where item.Age>18
             select item;  //(返回一个非List类型的集合,找到年龄大于18的记录)
     
      var lambda = lstPerson.Where(item => item.Age > 18);

     最后讲LINQ查询出的结果转换成List或Array:

    1 List<Person> selectList=linq.ToList(); //通过ToList()或ToList<Person>()转换成List.
    2 
    3 Array selectArr=linq.ToArray(); //通过ToArray()或ToArray<Person>()转换成Array.

    委托:

    首先定义委托类型:

    public delegate int FirstDele(int a); //需要在类中定义,和方法在同一级别

    接着有意思的事情来了:

      传统的委托需要一个方法,方法的返回值类型和参数个数、类型必须和委托相同,如:

    public int Add(int num)
    {
       return num + 100;
    }

      然后在需要用委托的地方写:

    FirstDele addDele = new FirstDele(Add);//实例化一个委托
    int result = addDele(10);//调用

    这些代码没有问题,只是略微有些复杂,这时候我们的Lambda表达式发挥奇效了:

    FirstDele fir = p => p + 100;
    int result = fir(10);

    就这么两句,好神奇!!

  • 相关阅读:
    国内顺利使用Google的另类技巧
    Java进程间通信
    Java 多线程(七) 线程间的通信——wait及notify方法
    转:关于copy_to_user()和copy_from_user()的一些用法
    转: pthread_detach()函数
    转:pthread_create()
    转: ubuntu配置NFS,挂载开发板
    转:全志A20 GPIO 总结文档
    转:Linux 内核中的 cdev_alloc和cdev_add
    转:1.1 cdev_init cdev_alloc 使用说明
  • 原文地址:https://www.cnblogs.com/dengshaojun/p/3796789.html
Copyright © 2011-2022 走看看