Ordenación de una List por un campo

24/09/2007 - 12:20 por Alhambra Eidos Kiquenet | Informe spam
Hola a todos,
tengo una lista genérica, similar a esta:

List<Product> donde la entidad Product es:

class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public int ProductType { get; set; }
public decimal UnitPrice { get; set; }
}

Tengo una lista así List<Product> en memoria que luego asigno a una DataList
(y hago databind). Y quiero ordenar por un campo que puede elegir el usuario:
ProductName y ProductType.

Cómo podría hacer un Sort de la lista genérica, y que esa ordenación sea
por un campo de la entidad, por ejemplo, ProductType ?

Gracias de antemano. Saludos.
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
 

Leer las respuestas

#1 Alberto Poblacion
24/09/2007 - 12:34 | Informe spam
"Alhambra Eidos Kiquenet"
wrote in message news:
Tengo una lista así List<Product> en memoria que luego asigno a una
DataList
(y hago databind). Y quiero ordenar por un campo que puede elegir el
usuario:
ProductName y ProductType.

Cómo podría hacer un Sort de la lista genérica, y que esa ordenación sea
por un campo de la entidad, por ejemplo, ProductType ?




List<T> tiene una funcion Sort con varias sobrecargas que puedes usar
según cómo quieras hacer la comparación. La más sencilla es Sort() que lo
que hace es llamar a la función de comparación que tengas dentro de tu clase
Product. Para eso tienes que hacer que Product implemente el interfaz
IComparable (o IComparable<Product>), lo cual supone añadir dentro una
función Compare que compare dos productos según el criterio que te interese.

Otra alternativa es usar una de las sobrecargas de Sort que recibe como
argumento el sistema de comparación, con lo que no tienes que tocar la clase
Product. Por ejemplo:

List<Product> productos = ...;
productos.Sort(ComparaPorTipo);
...
private static int ComparaPorTipo(Product x, Product y)
{
return x.ProductType.CompareTo(y.ProductType);
}

Preguntas similares