3

我正在尝试使用函数 findAll 加上一个 lambda 函数来获取 listOf 结构的特定元素,然后对该结果进行排序并将这些元素的排序保存在列表中。listOf 的结构有一个 id 和一个年龄,所以我想要的是获取所有 id=0 的项目,然后对该结果的年龄进行排序,将修改保留在变量中。

这是我尝试过的,但它不起作用

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

1 回答 1

4

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

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()
于 2012-05-09T11:35:23.160 回答