2012-04-18 17 views
80

Tôi có Danh sách này:Tôi làm cách nào để đặt một Danh sách <string>?

IList<string> ListaServizi = new List<string>() { }; 

làm cách nào để đặt hàng do các chuỗi bên trong? Chữ cái và tăng dần.

+3

Các bạn đã thử '.Sort' http://msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vs. 90% 29.aspx? – Matthew

+0

Phương pháp sắp xếp; kết hợp với Reverse nếu u cũng cần giảm dần –

+0

Nhìn vào đây http://www.dotnetperls.com/sort-list –

Trả lời

155
ListaServizi = ListaServizi.OrderBy(q => q).ToList(); 
+0

@ Một lý do để sử dụng OrderBy sẽ là ListaServizi không có phương thức Sort vì nó được khai báo là 'IList '. Mã này thực sự sẽ hoạt động như được viết, không giống như các câu trả lời nhận được nhiều upvotes hơn với 'ListaServizi.Sort()'. Tôi không nói đây là giải pháp tôi chọn, nhưng đây thực sự là câu trả lời đúng khi tôi đăng câu trả lời của mình. – phoog

+0

Nếu nó không phải là giải pháp mà bạn chọn thì tại sao đề xuất nó như là một câu trả lời? Đề xuất những gì bạn muốn làm câu trả lời; nếu điều đó có nghĩa là thay đổi loại từ IList thành List để bạn có thể gọi '.Sort' trên đó, thì tại sao không làm điều đó. – Servy

+1

@Servy Ông đã giải quyết vấn đề mà không thay đổi đặc tả vấn đề. Đó là cách ưa thích, cho đến nay. Hơn nữa, câu lệnh vấn đề sử dụng giao diện trên mẫu thực hiện, điều này rất quan trọng. Đề xuất thay đổi đối với loại Danh sách là chính xác, nhưng phải được thực hiện như một câu trả lời thay thế, sau câu trả lời chính xác, bởi vì nó đòi hỏi phải thay đổi vấn đề. –

31

Bạn có thể sử dụng Sort

List<string> ListaServizi = new List<string>() { }; 
ListaServizi.Sort(); 
4
ListaServizi.Sort(); 

sẽ làm điều đó cho bạn. Nó đủ đơn giản với một danh sách các chuỗi. Bạn cần phải thông minh hơn một chút nếu sắp xếp các đối tượng.

+1

'ListaServizi' là' IList '; giao diện không có phương thức 'Sắp xếp'. Bạn ít nhất cần một diễn viên ở đây. – phoog

7

Câu trả lời khác là chính xác để đề xuất Sort, nhưng có vẻ như họ đã bỏ lỡ thực tế rằng vị trí lưu trữ được nhập là IList<string. Sort không phải là một phần của giao diện.

Nếu bạn biết rằng ListaServizi sẽ luôn chứa List<string>, bạn có thể thay đổi loại được khai báo hoặc sử dụng dàn diễn viên. Nếu bạn không chắc chắn, bạn có thể kiểm tra các loại:

if (typeof(List<string>).IsAssignableFrom(ListaServizi.GetType())) 
    ((List<string>)ListaServizi).Sort(); 
else 
{ 
    //... some other solution; there are a few to choose from. 
} 

Có lẽ nhiều thành ngữ:

List<string> typeCheck = ListaServizi as List<string>; 
if (typeCheck != null) 
    typeCheck.Sort(); 
else 
{ 
    //... some other solution; there are a few to choose from. 
} 

Nếu bạn biết rằng ListaServizi đôi khi sẽ tổ chức một triển khai khác nhau của IList<string>, để lại một bình luận, và Tôi sẽ thêm một hoặc hai gợi ý để sắp xếp nó.

2
 List<string> myCollection = new List<string>() 
     { 
      "Bob", "Bob","Alex", "Abdi", "Abdi", "Bob", "Alex", "Bob","Abdi" 
     }; 

     myCollection.Sort(); 
     foreach (var name in myCollection.Distinct()) 
     { 
      Console.WriteLine(name + " " + myCollection.Count(x=> x == name)); 
     } 

đầu ra: Abdi 3 Alex 2 Bob 4

Các vấn đề liên quan