2012-05-09 43 views
3

我想获得listOf结构的具体函数findAll加上一个lambda函数的元素,然后对结果进行排序,并保留列表中保存的那些元素的排序。 listOf的结构有一个id和一个年龄,所以我想要的是获得id = 0的所有项目,然后对结果的年龄进行排序,并将该修改保留在变量中。使用findAll然后排序在vb.NET listOf

这是我尝试过,但它不工作

list.FindAll(Function(p1) p1.id = 0).Sort(Function(p1, p2) p1.age > p2.age) 

回答

4

你的代码行不起作用,因为的FindAll返回与找到的项目一个新的列表,你不将该新列表分配给列表变量。此外,您不能将调用链接到Sort,因为此函数更改基础列表并且不返回任何内容。要使用的FindAll和排序在一起,你将需要两个语句:

list = list.FindAll(Function(p1) p1.id = 0) 
list.Sort(Function(p1, p2) p1.age.CompareTo(p2.age)) 

这将是更容易使用LINQ到做到这一点,因为你总是可以表达链的LINQ和排序是比较容易做。但是您需要将结果重新分配到列表中:

list = list.Where(Function(p1) p1.id = 0) _ 
      .OrderBy(Function(p1) p1.Age).ToList() 
相关问题