Estoy implementando un clon LINQ en Lua, pero eso no es demasiado relevante aquí, y tengo la mayoría de las funciones hechas (enumerable/consultable, no el precompilador todavía), pero no puedo pensar en una forma inteligente de implementar OrderBy's Entonces por.¿Cuál es la forma inteligente de implementar OrderBy/ThenBy?
Actualmente ordeno una vez, luego coloco en nuevas listas y luego ordeno esas listas secundarias y finalmente fusiono los resultados nuevamente, pero eso parece muy derrochador y poco elegante, estoy seguro de que alguien ha descubierto una forma inteligente de hacerlo (mejor algoritmo), pero no tengo idea de qué se trata. ¿Alguna pista sobre cómo implementar OrderBy/Thenby de una manera eficiente?
Nota: construcciones de lenguaje y lenguaje con suerte no son relevantes aquí, estoy buscando el algoritmo generalizado, al igual que decir que una clasificación binaria se puede hacer en cualquier idioma.
Edit: Actualmente estoy trabajando en LINQ to Object, por lo que cualquier idea de cómo se haría en particular sería genial. Supongo que OrberBy/ThenBy son 2 llamadas a funciones, no una, pero podría estar equivocado.
Pero no debe un OrdenarPor/ThenBy puede hacer de dos llamadas a funciones diferentes? –
@Robert: al menos con Linq2SQL utiliza toda la cadena de métodos para producir una única expresión que logre el resultado deseado. Dependiendo de si su clon usa la ejecución diferida o no, puede provocar el colapso de orderby/thenby en una sola comparación. – tvanfosson
¿Se puede hacer esto solo con verdadero y falso? –