Ordenar una Lista – List.Sort()

Febrero 25, 2008 :: Posted by - Emilio Torrens :: Category -

Las listas genéricas tienen el método Sort que nos permite ordenar la lista de objetos, esto es una operación sencilla cuando la lista contiene objetos simples como fechas o números, pero cuando tenemos nuestras propias clases en esa lista podemos necesitar controlar como se ordena.

Para eso disponemos del IComparer en una de las sobrecargas del método donde podemos implementar como se ordenaran los objetos.

El caso mas típico ,y el mas sencillo, seria ordenar la lista de clases por un campo de la clase, en este ejemplo por el campo index de mi clase:

public class MyClass
 {
     public int index;
 }

 private static int Comparer(MyClass x, MyClass y)
 {
     return x.index.CompareTo(y.index);
 }

 public List<MyClass> SortMyClassList(List<MyClass> MyClassList)
 {
     MyClassList.Sort(Comparer);
     return MyClassList;
 } 

Una versión mas elegante con delegados:

public List<MyClass> SortMyClassList(List<MyClass> MyClassList)
   {
       MyClassList.Sort(
           delegate(MyClass x, MyClass y)
            {
                return x.index.CompareTo(y.index);
            }
           );
       return MyClassList;
   }    

Luego esto lo puedes complicar como quieras, sabiendo que:

Si x es mayor devuelve positivo.

Si son iguales 0 .

Si x es menor negativo.

Si te gusta compartelo ...
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • DotNetKicks
  • Live
  • MySpace
  • Meneame
  • Twitter

Tags:

Leave a Reply