2010-07-19 53 views
13

Tôi có một lớp:Làm thế nào để sắp xếp một danh sách trong C#

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

tôi có một danh sách các đối tượng MyObject:

Name Age 
ABC 12 
BBC 14 
ABC 11 

Làm thế nào để sắp xếp danh sách này với điều kiện: loại tên & loại đầu tiên Tuổi sau. Với danh sách này, kết quả sau khi phân loại:

cách
Name Age 
ABC 11 
ABC 12 
BBC 14 
+0

Tôi có một câu hỏi khác tại đây: http://stackoverflow.com/questions/3279248/help-me-to-combine-sorting-filtering-on-a-list –

Trả lời

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

Hai khác nhau sử dụng LINQ:

1) Sử dụng OrderByThenBy:

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

2) Sử dụng cú pháp truy vấn:

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

Sử dụng System.Linq bạn có thể dễ dàng đạt được điều này:

list = list.OrderBy(e=>e.Name).ThenBy(e=>e.Age); 

Đồng thời kiểm tra câu trả lời này: Sorting a list using Lambda/Linq to objects.

1

Bạn có thể làm như sau sử dụng 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

Bạn có thể vượt qua một đối tượng mới để Sắp xếp theo để nó Orders By rằng

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); 
     } 
    } 
} 
Các vấn đề liên quan