Array.Sort problem
HejJeg har et problem med Array.Sort metoden i c#
jeg har et program, der skal lave noget resultat beregning.
i mit program har jeg et array, som jeg vil sortere så jeg får sorteret mine objekter i rangorden.
Mine objekter der ligger i det array jeg vil sortere implementere IComparabl.
Jeg har lavet noget kode der sortere mine objekter efter tid, koden ser sådan ud:
#region IComparable Members
public int CompareTo(object obj)
{
Baad comBaad = (Baad) obj;
if (this.Resultatlinje == null || comBaad.Resultatlinje == null )
{
return -1;
}
if (this.Resultatlinje.Sejltid == comBaad.Resultatlinje.Sejltid )
{
return 0;
}
if (this.Resultatlinje.Sejltid > comBaad.Resultatlinje.Sejltid)
{
return 1;
}
else
{
return -1;
}
}
#endregion
det virker fint og sortere mine objekter rigtigt.
men på mine objekter har jeg også noget jeg kalder "specialtime"
det er tider der altid sal sorteres ned i bunden af mit array
der for har jeg ændret min kode så den nu ser sådan ud:
#region IComparable Members
public int CompareTo(object obj)
{
Baad comBaad = (Baad) obj;
if (this.Resultatlinje == null || comBaad.Resultatlinje == null )
{
return -1;
}
//NU KODE START
if (this.Resultatlinje.SpecialTime != "no")
{
return 1;
}
if (comBaad.Resultatlinje.SpecialTime != "no")
{
return 0;
}
//NU KODE SLUT
if (this.Resultatlinje.Sejltid == comBaad.Resultatlinje.Sejltid )
{
return 0;
}
if (this.Resultatlinje.Sejltid > comBaad.Resultatlinje.Sejltid)
{
return 1;
}
else
{
return -1;
}
}
#endregion
men når jeg tilføjer den nye kode sorteres mit array totalt underlig, mine "specialtimes" bliver godt nok laget ned i bunden, men mine tider bliver ikke sorteret rigtigt mere.
her under er hvor dan mine objekter bliver sorteret før og efter min nye kode:
før ny kode:
DSQ (specialtime, ligger i top da den har den korteste tid)
00:26:16
00:26:57
00:27:08
efter ny kode:
00:26:57
00:27:08
00:26:16
DSQ(specialtime)
er der nogle der har en forklaring på dette/kan finde en fejl i min kode.
00:26:57