Utilidad de List <T> .Sort () versus List <T> .OrderBy () para un miembro de una clase de contenedor personalizado

Me encontré corriendo a través de un antiguo código heredado del marco 3.5, y encontré algunos puntos donde hay un montón de listas y diccionarios que deben actualizarse de manera sincronizada. He determinado que puedo hacer que este proceso sea infinitamente más fácil de utilizar y comprender al convertirlos en clases de contenedores personalizados de nuevas clases personalizadas. Sin embargo, hay algunos puntos en los que me preocupa la organización de los contenidos de estas nuevas clases de contenedor por una propiedad interna específica. Por ejemplo, ordenando por la propiedad del número de identificación de una clase.

Como las clases de contenedor se basan principalmente en un objeto List genérico, mi primer instinto fue escribir las clases internas con IComparable y escribir el método CompareTo que compara las propiedades. De esta manera, solo puedo llamaritems.Sort() cuando quiero invocar la clasificación.

Sin embargo, he estado pensando en usaritems = items.OrderBy(Func) en lugar. De esta manera es más flexible si necesito ordenar por cualquier otra propiedad. La legibilidad también es mejor, ya que la propiedad utilizada para la clasificación se enumerará en línea con la llamada de clasificación en lugar de tener que buscar el código IComparable. La implementación general se siente más limpia como resultado.

No me importa la optimización prematura o micro, pero me gusta la consistencia. Creo que es mejor seguir con un tipo de implementación para tantos casos como sea apropiado, y usar diferentes implementaciones donde sea necesario. ¿Vale la pena convertir mi código para usar LINQ OrderBy en lugar de usar List.Sort? ¿Es una mejor práctica seguir con la implementación de IComparable para estos contenedores personalizados? ¿Hay alguna ventaja mecánica significativa ofrecida por cualquiera de los dos caminos sobre los que debería sopesar la decisión? ¿O es su funcionalidad final equivalente al punto en que simplemente se convierte en la preferencia del codificador?

Respuestas a la pregunta(2)

Su respuesta a la pregunta