前段时间一个项目用的是VS2005开发的,没有Linq没有lambda表达式,所以狠狠的把List<T>的一些方法用了一遍,现整理一下。
1. 在泛型集合中查询符合条件的第一条数据
1 private static string IDtoFind = "bk109"; 2 private static List<Book> Books = new List<Book>(); 3 Book result = Books.Find( 4 delegate(Book bk) 5 { 6 return bk.ID == IDtoFind; 7 } 8 );
其中Find的参数是一个委托,用来指向一个指定查询方式的方法,为省事直接写个匿名方法即可,当然。NET Framework 3.5 以上的话可以用lambda表达式。
2. 搜索与指定条件相匹配的元素,并返回整个 List<T> 中的最后一个匹配元素。与Find()类似。
1 result = Books.FindLast( 2 delegate(Book bk) 3 { 4 DateTime year2001 = new DateTime(2001,01,01); 5 return bk.Publish_date < year2001; 6 });
3. 检索与指定谓词定义的条件匹配的所有元素,这次返回的是符合条件的元素的List<T>
List<Book> results = Books.FindAll(FindComputer);
4. 实现升序或降序的排列
1 class Pet 2 { 3 public string Name { get; set; } 4 public int Age { get; set; } 5 }
1 List<Pet> pets =new List<Pet>() { new Pet { Name="Barley", Age=8 }, 2 new Pet { Name="Boots", Age=4 }, 3 new Pet { Name="Whiskers", Age=1 } }; 4 //升序 5 IEnumerable<Pet> query = pets.OrderBy( 6 delegate (Pet pet) 7 {return pet.Age} 8 ); 9 //降序 10 IEnumerable<Pet> query = pets.OrderByDescending( 11 delegate (Pet pet) 12 {return pet.Age} 13 );
5. 实现伪分页
IEnumerable<Pet> query=pets.Skip(2).Take(1);
Skip的意思是跳过前面的数量,Take的意思是获取的数量。