Actualmente, estoy ordenar una lista usando LINQ a objetos, a continuación, haciendo un ToList()
en los resultados:Convertir LINQ OrdenarPor a inplace lista de ordenación
var SortedPossibleMoveLocations = (from PML in PossibleMoveLocations
orderby Randomiser.Next()
orderby IsSameType(PML) ? (_Owner[PML] as TileFlowing).UnitsWithin : 0
orderby PossibleMoveLocationOrdering(PML)
select PML).ToList();
Quiero convertir esto para hacer un tipo in-situ, i adivina usando el método List<T>.Sort()
. Si solo estuviera ordenando por una cosa, sabría cómo hacer esto, sin embargo, como estoy ordenando por PossibleMoveLocationOrdering
(que devuelve int
) luego por IsSameType(PML) ? (_Owner[PML] as TileFlowing).UnitsWithin : 0
que evalúa a int
, entonces por Randomiser.Next()
(que devuelve una combinación aleatoria) no se como hacer esto.
Pregunta: ¿Cómo escribo la función de comparación (o hay un método mejor) para hacer un tipo implace de la consulta LINQ anterior?
Tenga en cuenta que OrdenarPor múltiple es casi siempre mal * * - que no va a añadir el 'ThenBy', por lo que en realidad va a invertir la prioridad de ordenación. Debe ser una sola OrdenarPor con múltiples expresiones –
entiendo voy a conseguir ordenar lo contrario de OrdenarPor x, y, z. (Aunque escribí esto antes de saber sobre la sintaxis de orden única). Es por eso que en el texto debajo del código, aclaro qué tiene presidencia. Gracias por la informacion sin embargo. –