2016-01-12 3 views
0

Привет У меня есть объект, называемый элементом здесь код для него:Отсортировать arraylist объектов по одному из свойств?

Public Class item 
Private itemValue As String 
Private urlfoundValue As String 
Private typeValue As String 
Private scorevalue As String 
Public Sub New() 
    ' Leave fields empty. 
End Sub 

Public Sub New(ByVal item As String, ByVal urlfound As String, ByVal type As String, ByVal score As String) 
    itemValue = item 
    urlfoundValue = urlfound 
    typeValue = type 
    scorevalue = score 
End Sub 

Public Property item() As String 
    Get 
     Return itemValue 
    End Get 
    Set(ByVal value As String) 
     itemValue = value 
    End Set 
End Property 

Public Property urlfound() As String 
    Get 
     Return urlfoundValue 
    End Get 
    Set(ByVal value As String) 
     urlfoundValue = value 
    End Set 
End Property 

Public Property type() As String 
    Get 
     Return typeValue 
    End Get 
    Set(ByVal value As String) 
     typeValue = value 
    End Set 
End Property 

Public Property score() As String 
    Get 
     Return scorevalue 
    End Get 
    Set(ByVal value As String) 
     scorevalue = value 
    End Set 
End Property 

У меня есть ArrayList из этих пунктов, которые я хотел бы разобраться в самом высоком до самого низкого порядка по свойству Score (это строка, но может преобразуется в int32).

Элементы все магазин в этом ArrayList:

Public fullitem As New System.Collections.ArrayList() 

Любые предложения о том, как получить детали, чтобы по счету? Может быть сделано и в C#.

+0

использовать ' List (Of Item) '/' List 'и воспользуйтесь прекрасным миром методов расширения, таких как' OrderBy' – Plutonix

ответ

1

Прямой ответ на ваш вопрос заключается в использовании LINQ, как это:

Dim orderdList = fullitem.Cast(Of item)() _ 
    .OrderBy(Function(i As item) Convert.ToInt32(i.score)) 

fullitem = New System.Collections.ArrayList() 

For Each item In orderdList 
    fullitem.Add(item) 
Next 

Cast Это использует, чтобы получить общий IEnumerable<item> от ArrayList, который затем позволяет вам использовать функции LINQ, как OrderBy.

Обратите внимание, что ArrayList устарел, и вместо этого вы должны использовать вместо него List<Item>. Если вы сделаете это, то вы можете сделать что-то же просто, как это:

Если у вас есть список, определенный как это:

Dim list = new List(Of item)() 

Вы можете сортировать это так:

list = list.Cast(Of item)() _ 
    .OrderBy(Function(i As item) Convert.ToInt32(i.score)) _ 
    .ToList() 
+0

Это отлично сработало! –

Смежные вопросы