Witam
Mam problem ze sortowaniem listy. Po prostu nie jest ona sortowana. Funkcja sortująca działa. Ale nie w przypadku kiedy lista składa się z dwóch takich samych list.
Mam listę
List list1 = new List();
List list2 = new List();
List list3 = new List();
list3.AddRange(list1);
list3.AddRange(list2);
list3.Sort(sortFunctions);
Gdzie funkcja sortująca to:
public static int Compare(ComponentInSetup c1, ComponentInSetup c2)
{
if (c1 == null)
{
if (c2 == null)
{
return 0;
}
else
{
return -1;
}
}
else
{
if (c2 == null)
{
return 1;
}
else
{
string[] s1 = c1.component["fsSetPos"].Replace(" ", "").Split('-');
string[] s2 = c2.component["fsSetPos"].Replace(" ", "").Split('-');
try
{
int s11 = int.Parse(s1[0]);
int s12 = int.Parse(s1[1]);
int s21 = int.Parse(s2[0]);
int s22 = int.Parse(s2[1]);
if (s11 > s21)
return 1;
else if (s11 < s21)
return -1;
else
{
if (s12 > s22)
return 1;
else if (s12 < s22)
return -1;
else
return 0;
}
}
catch
{
return 0;
}
}
}
}
Ogólnie dane w w kolumnie po której chcę sortować mają format:
1-1
1-2
1-3
2-4
3-12
4-15
itd.
W funkcji rozdzielam po myślniku i najpierw sortuje po pierwszej wartości a następnie po drugiej. Działa albo mi się wydaje że działa ale nie w przypadku takich list:
1-1
1-2
1-3
2-4
3-12
4-15
1-1
1-2
1-3
2-4
3-12
4-15
Ktoś może pomóc?
:edit:
Problemem nie było sortowanie tylko jeden wiersz śmieci w liście przez co źle sortowało, albo ten wiersz rozdzielał listy albo po zmianie return 0 na return 1 w catch{} to sortował tak że u góry były wartości od 6 do 12, później ten śmieć a następnie od 1 do 5.