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

就这么两句,好神奇!!

原文地址:https://www.cnblogs.com/dengshaojun/p/3796789.html