现在的位置: 首页 > 综合 > 正文

整理一下List的常用方法

2012年10月02日 ⁄ 综合 ⁄ 共 1020字 ⁄ 字号 评论关闭

前段时间一个项目用的是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的意思是获取的数量。

抱歉!评论已关闭.