我有一个乘客(对象)列表,它有不同的属性..
passenger.name
passenger.age
passenger.surname
我想按年龄标准对此列表进行排序,我该怎么做?
我知道在整数/字符串List.Sort()的列表中工作,但如果是一个对象列表,我不知道它是否可以按对象属性的值排序!
感谢。
答案 0 :(得分:98)
要按对象中的属性进行排序,您必须指定比较器或获取该属性的方法。
使用List.Sort
方法:
theList.Sort(Function(x, y) x.age.CompareTo(y.age))
使用OrderBy
扩展方法:
theList = theList.OrderBy(Function(x) x.age).ToList()
答案 1 :(得分:4)
如果您需要自定义字符串排序,可以创建一个函数,该函数根据您指定的顺序返回一个数字。
例如,我有想要根据正面或表扣进行排序的图片。所以我做了以下事情:
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
然后我像这样调用sort函数:
list.Sort(Function(elA As String, elB As String)
Return sortpictures(elA).CompareTo(sortpictures(elB))
End Function)
答案 2 :(得分:0)
您必须实现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())
也许它可以帮到你
答案 3 :(得分:0)
尝试..
Dim sortedList =来自条目列表中的条目,按条目顺序。entry.name升序选择条目
mylist = sortedList.ToList