Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用findAll,然后在vb.NET listOf中排序_Vb.net_Generic List_Lambda - Fatal编程技术网

使用findAll,然后在vb.NET listOf中排序

使用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返回一个包含找到的项

我试图用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变量。此外,您不能将调用链接到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()