2011-01-18 29 views
10

tengo una clase PropertyDetails:cómo ordenar la lista <T> en C#/.NET

public class PropertyDetails 
{ 

    public int Sequence { get; set; } 

    public int Length { get; set; } 

    public string Type { get; set; } 
} 

Estoy creando una lista de PropertyDetails como

List<PropertyDetails> propertyDetailsList=new List<PropertyDetails>(); 

Quiero ordenar esta lista por PropertyDetails.Sequence.

Las soluciones de Linq son bienvenidas.

+0

Lista propertyDetailsList = new List (); – PramodChoudhari

Respuesta

1

Nunca use colecciones no genéricas en C# cuando puede usar genéricos en su lugar. Hay muchas razones para usar colecciones genéricas solo (excepto en casos muy especiales).

Ver esta cuestión para más información: When would you not use Generic Collections?

esta manera puede utilizar List<PropertyDetails> (que creo que expone un método Sort()) o SortedList<,>.

2
var sortedList = propertyDetailsList.OrderBy(pd => pd.Sequence); 
+2

No está ordenando realmente la lista, pero creando un nuevo IEnumerable que contiene los elementos ordenados ... Todavía creo que esta es la solución solicitada. –

+0

No es una "lista ordenada". Es un "IOrderableEnumerable ". Necesita un .ToList() para hacer una "lista ordenada" real. –

+0

por lo tanto, el uso de "var", sortedList es solo el nombre de la variable – Tahbaza

25

Si desea ordenar la lista existente en el lugar, entonces usted puede utilizar el Sort método:

List<PropertyDetails> propertyDetailsList = ... 
propertyDetailsList.Sort((x, y) => x.Sequence.CompareTo(y.Sequence)); 

Si desea crear una nueva copia, ordenada de la lista a continuación, puede utilizar OrderBy método de LINQ:

List<PropertyDetails> propertyDetailsList = ... 
var sorted = propertyDetailsList.OrderBy(x => x.Sequence).ToList(); 

(. Y si usted no necesita los resultados como el hormigón List<T> continuación, se puede omitir la llamada final ToList)

5

mediante LINQ se puede usar algo similar a:

list.OrderBy(x => x.Sequence).toList(); 

Pero yo prefiero usar un comparador personalizado.

Cuestiones relacionadas