2008-10-28 36 views
38

Trong C# (3.0 hoặc 3.5, vì vậy chúng tôi có thể sử dụng lambdas), có cách nào phân loại danh sách ngày theo thứ tự giảm dần không? Tôi biết tôi có thể làm một cách thẳng thắn và sau đó đảo ngược toàn bộ điều,Danh sách sắp xếp <DateTime> Giảm dần

docs.Sort((x, y) => x.StoredDate.CompareTo(y.StoredDate)); 
docs.Reverse(); 

nhưng có biểu thức lambda để làm điều đó một bước?

Trong ví dụ trên, StoredDate là thuộc tính được nhập là Ngày giờ.

Trả lời

69

Mặc dù nó chưa được kiểm tra ...

docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate)); 

nên trái ngược với những gì bạn ban đầu đã có.

20
docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate)); 

Nên làm những gì bạn đang tìm kiếm.

6
docs.Sort((x, y) => -x.StoredDate.CompareTo(y.StoredDate)); 

Lưu ý dấu trừ.

+0

lưu cuộc sống của tôi: D –

56

Có gì sai với:

docs.OrderByDescending(d => d.StoredDate); 
+0

trình với tôi :) – AshOoO

+3

1 cho ngắn gọn. –

+4

Lưu ý rằng điều này tạo ra một danh sách có thứ tự mới thay vì sửa đổi danh sách tại chỗ. Cấp, mất hiệu suất là không đáng kể. –

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