2011-01-18 38 views
10

Tôi có một lớp PropertyDetails:làm thế nào để sắp xếp Danh sách <T> trong C#/.net

public class PropertyDetails 
{ 

    public int Sequence { get; set; } 

    public int Length { get; set; } 

    public string Type { get; set; } 
} 

tôi đang tạo ra một danh sách các PropertyDetails như

List<PropertyDetails> propertyDetailsList=new List<PropertyDetails>(); 

Tôi muốn sắp xếp danh sách này bằng PropertyDetails.Sequence.

Giải pháp LINQ được hoan nghênh.

+0

Danh sách propertyDetailsList = new List (); – PramodChoudhari

Trả lời

1

Đừng bao giờ sử dụng các bộ sưu tập không chung chung trong C# khi bạn có thể sử dụng Generics thay thế. Có rất nhiều lý do để sử dụng bộ sưu tập chung chỉ có (ngoại trừ trường hợp rất đặc biệt).

Xem câu hỏi này cho biết thêm: When would you not use Generic Collections?

Vì vậy, bạn có thể sử dụng List<PropertyDetails> (mà tôi tin phơi bày một phương pháp Sort()) hoặc SortedList<,>.

2
var sortedList = propertyDetailsList.OrderBy(pd => pd.Sequence); 
+2

Thực sự không phân loại danh sách, nhưng tạo một IEnumerable mới có chứa các mục được sắp xếp ... Tôi vẫn nghĩ rằng đây là giải pháp được yêu cầu. –

+0

Nó không phải là một "SortList". Nó là một "IOrderableEnumerable ". Nó cần một .ToList() để tạo ra một "sortList" thực sự. –

+0

do đó việc sử dụng "var", sortList chỉ là tên biến – Tahbaza

25

Nếu bạn muốn sắp xếp danh sách hiện có tại chỗ sau đó bạn có thể sử dụng Sort phương pháp:

List<PropertyDetails> propertyDetailsList = ... 
propertyDetailsList.Sort((x, y) => x.Sequence.CompareTo(y.Sequence)); 

Nếu bạn muốn tạo ra một mới, sắp xếp bản sao của danh sách thì bạn có thể sử dụng OrderBy phương pháp LINQ của:

List<PropertyDetails> propertyDetailsList = ... 
var sorted = propertyDetailsList.OrderBy(x => x.Sequence).ToList(); 

(. Và nếu bạn không cần phải kết quả như một bê tông List<T> sau đó bạn có thể bỏ qua trận chung kết ToList cuộc gọi)

5

Sử dụng LINQ bạn có thể sử dụng một cái gì đó tương tự như:

list.OrderBy(x => x.Sequence).toList(); 

Nhưng tôi thích sử dụng một comparer tùy chỉnh.

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