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);

    就这么两句,好神奇!!

  • 相关阅读:
    androidstudio配置模拟器路径
    Linux常见命令
    逆向助手使用
    Git服务器回滚到固定版本
    Git使用
    使用本地Gradle版本
    系统模拟器创建
    AndroidStudio设置代理
    关联、参数化、思考时间、检查点、事务的设置方式
    SQL:内连接、左外连接、右外连接、全连接、交叉连接区别
  • 原文地址:https://www.cnblogs.com/dengshaojun/p/3796789.html
Copyright © 2011-2022 走看看