[C#] Sortowanie listy nie działa


(Marcin Obala) #1

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.