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

    就这么两句,好神奇!!

  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/dengshaojun/p/3796789.html
Copyright © 2011-2022 走看看