2010-07-19 12 views
13

tengo una clase:Cómo ordenar una lista en C#

public class MyObject 
{ 
public string Name; 
public int Age; 
} 

tengo una lista de objetos MyObject:

Name Age 
ABC 12 
BBC 14 
ABC 11 

Cómo ordenar esta lista con la condición: ordenar el nombre primero & especie Edad después Con esta lista, el resultado después de la clasificación:

maneras
Name Age 
ABC 11 
ABC 12 
BBC 14 
+0

Tengo otra pregunta al aquí: http://stackoverflow.com/questions/3279248/help-me-to-combine-sorting-filtering-on-a-list –

Respuesta

10
class Program 
{ 
    static void Main(string[] args) 
    { 
     var list = new List<MyObject>(new[] 
     { 
      new MyObject { Name = "ABC", Age = 12 }, 
      new MyObject { Name = "BBC", Age = 14 }, 
      new MyObject { Name = "ABC", Age = 11 }, 
     }); 
     var sortedList = from element in list 
         orderby element.Name 
         orderby element.Age 
         select element; 

     foreach (var item in sortedList) 
     { 
      Console.WriteLine("{0} {1}", item.Name, item.Age); 
     } 
    } 
} 
14

dos diferentes utilizando LINQ:

1) Usando OrderBy y ThenBy:

l = l.OrderBy(x => x.Name).ThenBy(x => x.Age).ToList(); 

2) El uso de la sintaxis de consulta:

l = (from x in l 
    orderby x.Name, x.Age 
    select x).ToList(); 
1

Usted puede hacer lo siguiente usando LINQ:

class Program 
{ 
    static void Main(string[] args) 
    { 
     List<MyObject> list = new List<MyObject>(); 

     list.Add(new MyObject() { Age = 12, Name = "ABC" }); 
     list.Add(new MyObject() { Age = 11, Name = "ABC" }); 
     list.Add(new MyObject() { Age = 14, Name = "BBC" }); 

     var sorted = list.OrderBy(mo => mo.Name).ThenBy(mo => mo.Age); 

     foreach (var myObject in sorted) 
     { 
      Console.WriteLine(string.Format("{0} - {1}", 
           myObject.Name, myObject.Age)); 
     } 
    } 
} 
0

se puede pasar un nuevo objeto al orden por el fin de que los pedidos por que

class Program 
{ 
    static void Main(string[] args) 
    { 
     var list = new List<MyObject>(new[] 
     { 
      new MyObject { Name = "ABC", Age = 12 }, 
      new MyObject { Name = "BBC", Age = 14 }, 
      new MyObject { Name = "ABC", Age = 11 }, 
     }); 
     var sortedList = list.OrderBy(x => new { x.Name , x.Age }); 

     foreach (var item in sortedList) 
     { 
      Console.WriteLine("{0} {1}", item.Name, item.Age); 
     } 
    } 
} 
Cuestiones relacionadas