To pytanie jest podobne do LINQ group one type of item, ale jest obsługiwane w bardziej ogólny sposób.LINQ - specyficzne dla grup typy klas
Mam listę, która ma różne klasy pochodne. Może mam coś takiego:
List<BaseClass> list = new List<BaseClass>() {
new Class1(1),
new Class2(1),
new Class1(2),
new Class3(1),
new Class2(2),
new Class4(1),
new Class3(2)
};
Próbuję użyć LINQ do semi-posortować listę tak, że naturalny porządek jest utrzymywany z wyjątkiem niektórych klas, które mają base.GroupThisType == true. Wszystkie klasy z GroupThisType powinny być zgrupowane w miejscu, w którym występuje pierwsza klasa tego samego typu. Oto co wyjście powinno być tak:
List<BaseClass> list = new List<BaseClass>() {
new Class1(1),
new Class1(2),
new Class2(1),
new Class3(1),
new Class3(2)
new Class2(2),
new Class4(1),
};
Edit: Ups, zapomniałem powiedzieć, że ten wynik jest przy założeniu (klasy 1 i Klasa3) .GroupThisType == true
+1 Nawet ładniejszy wyzwanie – SLaks
@SLaks: Tak, jedyną rzeczą, myślałem jest GroupThisType będzie powielany i teoretycznie może być różny dla wystąpień tej samej klasy. Utworzyłem List groupTheseTypes, ale nie znam typów z wyprzedzeniem (system typu wtyczki). Zmienna statyczna prawdopodobnie miałaby największy sens. To nie zmienia twojej odpowiedzi. –
... chyba że chcę go w klasie bazowej, nie mogę uczynić go statycznym, w przeciwnym razie mam tylko jedno wystąpienie tej zmiennej. No cóż ... –