Esta pregunta es similar a LINQ group one type of item pero se maneja de una manera más genérica.LINQ - tipos de clases específicos de grupo
Tengo una lista que tiene varias clases derivadas. Puede que tenga algo como esto:
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)
};
Estoy tratando de utilizar LINQ a semi-Ordenar la lista por lo que el orden natural se mantiene con excepción de ciertas clases que tienen base.GroupThisType == true. Todas las clases con GroupThisType deben agruparse juntas en el lugar donde se produce la primera clase del mismo tipo. Esto es lo que la salida debería ser como:
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),
};
Editar: Vaya, se olvidó de decir que este resultado está asumiendo (Clase 1 y Class3) .GroupThisType == true
1 Incluso reto más bonito – SLaks
@SLaks: Sí, lo único que pensaba es GroupThisType se duplicaría y en teoría podría ser diferente para las instancias de la misma clase. Crearía una lista groupTheseTypes, pero no sé los tipos de antemano (sistema tipo plugin). Una variable estática probablemente tenga más sentido. No cambia tu respuesta. –
... excepto si lo quiero en la clase base, no puedo hacerlo estático, de lo contrario, solo tengo una instancia de esa variable. Oh, bueno ... –