Array.Sort

P

philip

Public Class Form1
Public Structure Identity
Public firstname As String
Public name As String
End Structure
I declared a array of a structure :

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim Arr(0 To 3) As Identity

Arr(0).firstname = "zzzzzzz"
Arr(1).firstname = "aaaa"
Arr(2).firstname = "sss"
Arr(3).firstname = "mmmm"

Arr(0).name = "uuuu"
Arr(1).name = "ffff"
Arr(2).name = "zzzz"
Arr(3).name = "aaaa"
End Sub
End Class

Is it possible to sort this one dimensional array by 'firstname' or by
'name' ?
Using array.sort ? But with which arguments ?
Thanks for response.

Philip
 
B

Brian Henry

Module Module1

Sub Main()

Dim Arr(0 To 3) As Identity

Arr(0).firstname = "zzzzzzz"

Arr(1).firstname = "aaaa"

Arr(2).firstname = "sss"

Arr(3).firstname = "mmmm"

Arr(0).name = "uuuu"

Arr(1).name = "ffff"

Arr(2).name = "zzzz"

Arr(3).name = "aaaa"



Dim sorter As New ListViewSortOrder()

Array.Sort(Arr, sorter)

For Each PER As Identity In Arr

Console.WriteLine(PER.firstname & ControlChars.Tab & PER.name)

Next

Console.Read()

End Sub

End Module



Public Structure Identity

Public firstname As String

Public name As String

End Structure



Public Class ListViewSortOrder

Implements IComparer


Public Sub New()

End Sub



''' <summary>

''' Comparision function for IComparer

''' </summary>

''' <param name="x"></param>

''' <param name="y"></param>

''' <returns></returns>

''' <remarks></remarks>

Public Function compare(ByVal x As Object, ByVal y As Object) As Integer
Implements IComparer.Compare

Dim xItem, yItem As Identity

Dim sortOrder As String = "ASC"

xItem = CType(x, Identity)

yItem = CType(y, Identity)



If sortOrder = "ASC" Then

Return (xItem.firstname).CompareTo(yItem.firstname)

Else

Return (yItem.firstname).CompareTo(xItem.firstname)

End If

End Function

End Class
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top