2013-05-18 88 views
17

Tôi có danh sách các thành phố.Sắp xếp danh sách các đối tượng theo giá trị của thuộc tính

List<City> cities; 

Tôi muốn sắp xếp danh sách theo dân số. Mã tôi đang hình dung giống như:

cities.Sort(x => x.population); 

nhưng điều này không hiệu quả. Tôi nên sắp xếp danh sách này như thế nào?

+2

http://stackoverflow.com/questions/2766686/how-do-i-use-a-lambda-expression-to-sort- số nguyên-bên trong-a-đối tượng – devshorts

+1

có thể trùng lặp của [Sắp xếp danh sách đối tượng theo thuộc tính C#] (http://stackoverflow.com/questions/9716273/sort-list-of-object-by-properties-c-sharp) – NINCOMPOOP

+0

Joe, bạn phải có hai đối số. Một là mục và cái kia là bộ so sánh. Kiểm tra ví dụ trong bài đăng mà tôi đã liên kết – devshorts

Trả lời

35

Sử dụng chức năng OrderBy of Linq. Xem http://msdn.microsoft.com/en-us/library/bb534966.aspx

cities.OrderBy(x => x.population); 
+13

Điều quan trọng cần lưu ý là sắp xếp unline, OrderBy không sửa đổi đầu vào. –

+0

Hoặc nếu bạn muốn đơn giản xuất danh sách theo thứ tự ngược lại, bạn có thể sử dụng 'cities.Reverse()' – Curiousity

13

Sử dụng tính năng này sẽ hoạt động.

List<cities> newList = cities.OrderBy(o=>o.population).ToList(); 
2

Một tùy chọn khác, nếu bạn không đủ may mắn để có thể sử dụng LINQ, bạn có thể sử dụng giao diện IComparer hoặc IComparable.

Dưới đây là một bài viết KB tốt trên hai giao diện: http://support.microsoft.com/kb/320727

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