Cette question est similaire à LINQ group one type of item mais traitée de manière plus générique.LINQ - types de classes spécifiques au groupe
J'ai une liste qui a diverses classes dérivées. Je peux avoir quelque chose comme ceci:
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)
};
Je suis en train d'utiliser LINQ semi-tri de la liste de sorte que l'ordre naturel est maintenu, sauf pour certaines classes qui ont base.GroupThisType == true. Toutes les classes avec GroupThisType doivent être regroupées à l'endroit où la première classe du même type se produit. Voici ce que la sortie devrait être comme:
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: Oops, a oublié de dire que ce résultat est en supposant (classes 1 et classe 3) .GroupThisType == true
+1 Encore mieux défi – SLaks
@SLaks: Ouais, la seule chose que je pensais est GroupThisType serait dupliqué et en théorie pourrait être différente pour les instances de la même classe. Je voudrais créer une liste groupTheseTypes, mais je ne connais pas les types à l'avance (système de type plugin). Une variable statique aurait probablement le plus de sens. Cela ne change pas votre réponse. –
... sauf si je le veux dans la classe de base je ne peux pas le rendre statique, sinon je n'ai qu'une instance de cette variable. Eh bien ... –