2010-07-19 12 views
13

Ich habe eine Klasse:Wie man eine Liste in C# sortieren

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

Ich habe eine Liste der myObject Objekte:

Name Age 
ABC 12 
BBC 14 
ABC 11 

Wie diese Liste mit Bedingung sortieren: Sortieren Name zuerst & sortieren Alter später. Mit dieser Liste, das Ergebnis nach dem Sortieren:

Name Age 
ABC 11 
ABC 12 
BBC 14 
+0

ich hier eine andere Frage: http://stackoverflow.com/questions/3279248/help-me-to-combine-sorting-filtering-on-a-list –

Antwort

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

Zwei verschiedene Möglichkeiten, mit LINQ:

1) Mit OrderBy und ThenBy:

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

2) Mit der Abfragesyntax:

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

Sie können die folgenden mit LINQ tun:

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

Sie können ein neues Objekt vorbeigehen, so zu bestellen, dass es Bestellungen dieses

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); 
     } 
    } 
} 
Verwandte Themen