Sortowanie listy za pomocą wyrażenia lambda.

Odpowiedz Nowy wątek
2018-11-21 01:02
0

Witam,
Chciałbym się zapytać o sortowanie litsy obiektów mojej klasy za pomocą wyrażenia lambda po dwóch składowych.
Klasy maksymalnie uprościłem, żeby rozumieć jak to działa.
Mam taką klasę:

public class Klasa
{
       int a;
       bool warunek;
}

Do tego listę do której dodam obiekty poniżej

List<Klasa> lista = new List<Klasa>();

Załóżmy że mamy takie obiekty dodane do listy:

Klasa o1 = new Klasa{ a = 1, warunek = false};
Klasa o2 = new Klasa{ a = 0, warunek = true};
Klasa o3 = new Klasa{ a = -100, warunek = false};
Klasa o4 = new Klasa{ a = 56, warunek = true};
Klasa o5 = new Klasa{ a = 11, warunek = true};

I chciałbym je posortować tak aby te z wartościami false były posortowane rosnąco na początku listy.
Próbowałem je posortować tak, ale nie dawało to oczekiwanego efektu

lista.Sort((p1, p2) => p1.a.CompareTo(p2.a));
lista.Sort((p1, p2) => p1.warunek.CompareTo(p2.warunek));

Czy jest możliwość tego zrobienia? Czy tu musiał bym użyć funkcji bazodanowych?

Pozostało 580 znaków

2018-11-21 03:47

O to Ci chodziło?

lista=lista.OrderBy(o => o.warunek).ThenBy(o => o.a).ToList();

Pozostało 580 znaków

2018-11-21 10:37
0

Dokładnie o coś takiego mi chodziło. Dzięki

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0