繁体   English   中英

在 VB.NET 中对对象列表进行排序

[英]Sort a List of Object in VB.NET

我有一个乘客(对象)列表,其中它具有不同的属性..

passenger.name
passenger.age
passenger.surname

我想按年龄标准对这个列表进行排序,我该怎么做?

我知道在整数/字符串列表中 List.Sort() 有效,但如果是对象列表,我不知道是否可以按对象属性的值排序!

谢谢。

要按对象中的属性排序,您必须指定比较器或方法来获取该属性。

使用List.Sort方法:

theList.Sort(Function(x, y) x.age.CompareTo(y.age))

使用OrderBy扩展方法:

theList = theList.OrderBy(Function(x) x.age).ToList()

如果您需要自定义字符串排序,您可以创建一个函数,根据您指定的顺序返回一个数字。

例如,我想根据正面或扣环对图片进行排序。 所以我做了以下事情:

Private Function sortpictures(s As String) As Integer
    If Regex.IsMatch(s, "FRONT") Then
        Return 0
    ElseIf Regex.IsMatch(s, "SIDE") Then
        Return 1
    ElseIf Regex.IsMatch(s, "CLASP") Then
        Return 2
    Else
        Return 3
    End If
End Function

然后我这样调用排序函数:

list.Sort(Function(elA As String, elB As String)
                  Return sortpictures(elA).CompareTo(sortpictures(elB))
              End Function)

您必须实现 IComparer 接口。

在这个示例中,我有我的自定义对象 JSONReturn,我这样实现我的类:

Friend Class JSONReturnComparer
    Implements IComparer(of JSONReturn)

    Public Function Compare(x As JSONReturn, y As JSONReturn) As Integer Implements    IComparer(Of JSONReturn).Compare
        Return String.Compare(x.Name, y.Name)
    End Function

End Class

我这样调用我的排序列表方法:alResult.Sort(new JSONReturnComparer())

也许它可以帮助你

尝试..

Dim sortedList = From entry In mylist Order By entry.name Ascending 选择条目

mylist = sortedList.ToList

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM