objects.
As I said you call the Array.Sort function that accepts a Comparer object.
needs to do, passing it one pair of objects. As the sort algorithm is
working it will repeatedly call the comparer object. Once all the objects
"Jim Hubbard" <Respond@Group.net> wrote in message
news:ylW_a.1001$as.589@fe03.atl2.webusenet.com...
>
> "Jay B. Harlow [MVP - Outlook]" <Jay_Harlow@email.msn.com> wrote in
message
> news:ureDdjrYDHA.2236@TK2MSFTNGP10.phx.gbl...
> > Jim,
> > Define a PeopleComparer class that implements the IComparer interface.
The
> > PeopleComparer object would know which property you want to sort on and
> act
> > accordingly.
> >
> > When you call Array.Sort, you would use the overloaded version that
> accepts
> > an IComparer.
> >
> > For an example see:
> >
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemArrayClassSortTopic3.asp
> >
> > I would define the PeopleComparer to accept the property name as a
> parameter
> > to the constructor then have a select case in the compare.
> >
> > Something like:
> >
> > Public Class PeopleComparer
> > Implements IComparer
> >
> > Private Readonly m_field As String
> >
> > Public Sub New()
> > MyClass.New("Name")
> > End Sub
> >
> > Public Sub New(ByVal field As String)
> > m_field = field
> > End Sub
> >
> > Public Function Compare(ByVal x As Object, ByVal y As Object) As
> > Integer _
> > Implements IComparer.Compare
> > Dim xo As People = DirectCast(x, People)
> > Dim yo As People = DirectCast(y, People)
> > Select Case m_field
> > Case "Sex"
> > Return xo.Sex.CompareTo(yo.Sex)
> > Case "Age"
> > Return xo.Age.CompareTo(yo.Age)
> > Case "Name"
> > Return xo.Name.CompareTo(yo.Name)
> > End Select
> > End Function
> >
> > End Class
> >
> >
> > Array.Sort(MyPeopleArray, New PeopleComparer("Age"))
> >
> > Hope this helps
> > Jay
> >
> > "its me" <atmy@house.com> wrote in message
> > news:4sT_a.13442$_3.6091@fe02.atl2.webusenet.com...
> > > Let's say I have a class of people...
> > >
> > > Public Class People
> > > Public Sex as String
> > > Public Age as int
> > > Public Name as string
> > > end class
> > >
> > > And I declare an array of this class...
> > >
> > > Dim MyPeopleArray(3) as People
> > >
> > > Then I fill my arry with 3 people...
> > >
> > > MyPeopleArray(0).Sex = "Female"
> > > MyPeopleArray(0).Age = 32
> > > MyPeopleArray(0).Name = "Marsha Marsha Marsha"
> > >
> > > MyPeopleArray(1).Sex = "Male"
> > > MyPeopleArray(1).Age = 31
> > > MyPeopleArray(1).Name = "John"
> > >
> > > MyPeopleArray(2).Sex = "Can't decide"
> > > MyPeopleArray(2).Age = "23"
> > > MyPeopleArray(2).Name = "Don't lable me"
> > >
> > > How would I resort my the MyPeopleArray to have the people in Age
order,
> > > name order or sex order?
> > >
> > > Thanks!
> > >
> > > Jim
> > >
> > >
> > >
> >
> >
>
> Thanks for the reply, but this solution does not emulate the Array.Sort
> function. ICompare only compares two objects and tells you which comes
> first. It does not sort the array and does not compare more than 2
objects.
>
> I can code a solution, I was just making sure that I wasn't re-inventing
the
> wheel.
>
> Thanks again.
>
> Jim
>
>
>