2011-02-09 28 views
5

Có lẽ những gì tôi hỏi khá đơn giản nhưng dường như tôi không nhận được điều này. Tôi có một danh sách các phần tử có chứa trường Ngày và trường Thời gian. Trường Date là một DateTime thông thường và trường Time là một chuỗi. Thời gian được định dạng như HH: mm và phạm vi trong 24h.Danh sách đặt hàng theo Ngày và Giờ (theo định dạng chuỗi)

Đặt hàng danh sách của tôi theo Ngày đơn giản bằng cách thực hiện List.OrderBy (e => e.Date), nhưng dường như tôi không thể đặt hàng theo thời gian để thứ tự các bản ghi theo ngày và giờ.

Tôi đã thử cách này nhưng có thể đó là một sai lầm lớn!

List = List.OrderBy(e => e.EstimatedDate).OrderBy(e => new TimeSpan(int.Parse(e.EstimatedTime.Substring(0,e.EstimatedTime.LastIndexOf(":"))),int.Parse(e.EstimatedTime.Substring(e.EstimatedTime.LastIndexOf(":")+1)),0).TotalMinutes); 

Tôi hy vọng ai đó có thể giúp tôi với điều này.

Trả lời

10

Bạn muốn OrderBy(...).ThenBy(...); và cũng - không rằng nếu thời gian là trong HH:mmbạn không cần phải phân tích nó - bạn có thể chỉ sắp xếp nó theo thứ tự abc, tức là

List = List.OrderBy(e => e.EstimatedDate).ThenBy(e => e.EstimatedTime).ToList(); 

hoặc thông qua LINQ:

List = (from e in List 
     orderby e.EstimatedDate, e.EstimatedTime 
     select e).ToList(); 
+1

Tôi biết điều này sẽ khá đơn giản, hôm nay tôi thực sự buồn ngủ. Bạn là người đầu tiên trả lời và tôi thấy câu trả lời của bạn khá tốt để bạn có được điểm. Nhờ tất cả những người đã giúp mặc dù. – Hallaghan

4

tại sao không thử một cái gì đó như sau:

List.OrderBy(e => e.Date).ThenBy(e => DateTime.Parse(e.Time)); 
// May need to change DateTime.Parse(e.Time) with appropriate conversion code 
2

Bạn biết ThenBy()?

List = List.OrderBy(DATE).ThenBy(Time) 
Các vấn đề liên quan