首页 > 代码库 > LINQ、Lambda与委托

LINQ、Lambda与委托

 首先定义个Person类:

1 public class Person2 {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);

 

就这么两句,好神奇!!