使用findAll,然后在vb.NET listOf中排序
我试图用findAll函数和lambda函数获取listOf结构的特定元素,然后对结果进行排序,并将这些元素的排序保存在列表中。listOf的结构有一个id和一个age,所以我想要的是获取id=0的所有项,然后对结果的age进行排序,将修改保留在变量中 这是我尝试过的,但不起作用使用findAll,然后在vb.NET listOf中排序,vb.net,generic-list,lambda,Vb.net,Generic List,Lambda,我试图用findAll函数和lambda函数获取listOf结构的特定元素,然后对结果进行排序,并将这些元素的排序保存在列表中。listOf的结构有一个id和一个age,所以我想要的是获取id=0的所有项,然后对结果的age进行排序,将修改保留在变量中 这是我尝试过的,但不起作用 list.FindAll(Function(p1) p1.id = 0).Sort(Function(p1, p2) p1.age > p2.age) 您的代码行不起作用,因为FindAll返回一个包含找到的项
list.FindAll(Function(p1) p1.id = 0).Sort(Function(p1, p2) p1.age > p2.age)
您的代码行不起作用,因为FindAll返回一个包含找到的项的新列表,而您没有将该新列表分配给list变量。此外,您不能将调用链接到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()