2011-03-17 32 views
329

Tôi chắc chắn đây sẽ là một câu hỏi tương đối đơn giản.LINQ Truy vấn giảm dần đơn đặt hàng

Tôi có truy vấn LINQ mà tôi muốn đặt hàng trước ngày được tạo gần đây nhất.

Xem:

 var itemList = from t in ctn.Items 
         where !t.Items && t.DeliverySelection 
         orderby t.Delivery.SubmissionDate descending 
         select t; 

Tôi cũng đã cố gắng:

 var itemList = (from t in ctn.Items 
         where !t.Items && t.DeliverySelection 
         select t).OrderByDescending(); 

nhưng điều này mang lại một lỗi:

Không quá tải cho phương pháp 'OrderByDescending' mất 0 luận

Từ những gì tôi đã đọc, tôi khá chắc chắn cách đầu tiên tôi đã thực hiện nó sẽ làm việc. Tôi đã cố gắng thay đổi giảm dần để tăng dần chỉ để xem nếu nó làm bất cứ điều gì nhưng nó vẫn như cũ.

Tôi rất biết ơn nếu ai đó có thể xem xét truy vấn và xem tôi có đang làm gì sai không. Cảm ơn :)

Trả lời

511

Bạn cần phải chọn một tài sản để sắp xếp theo và vượt qua nó như là một biểu thức lambda để OrderByDescending

như:

.OrderByDescending(x => x.Delivery.SubmissionDate); 

Thực sự, mặc dù phiên bản đầu tiên của LINQ của bạn tuyên bố sẽ hoạt động. Có phải t.Delivery.SubmissionDate thực sự được điền bằng ngày hợp lệ không?

+0

Xin chào, nhờ trả lời của bạn. Tôi đã tìm ra vấn đề là gì. Tôi đã sử dụng một paginatedList, và nó đã thực sự làm thứ tự từ lớp helper đó. Tôi sẽ đánh dấu câu trả lời của bạn là chính xác khi giới hạn thời gian tăng lên :) – 109221793

23

Tôi nghĩ rằng một giây nên

var itemList = (from t in ctn.Items 
       where !t.Items && t.DeliverySelection 
       select t).OrderByDescending(c => c.Delivery.SubmissionDate); 
+0

giảm dần gấp đôi? – Snowbear

+0

Tôi nghĩ là công bằng với anh ta, tôi đã gõ sai truy vấn khi tôi đăng (tức là rời khỏi dòng thứ tự cuối cùng thứ hai) và anh ấy có thể chỉ sao chép và dán để chứng minh việc sử dụng OrderByDescending lambda. – 109221793

+0

Yep ... xin lỗi. Tôi không phải là lỗi sao chép/dán. Tôi sẽ chỉnh sửa nó. – Jonathan

122

Tôi nghĩ rằng đây đầu tiên thất bại bởi vì bạn đang đặt giá trị là null. Nếu Phân phối là một bảng có liên quan đến khóa ngoại thì bạn nên bao gồm bảng này trước tiên, ví dụ bên dưới:

var itemList = from t in ctn.Items.Include(x=>x.Delivery) 
        where !t.Items && t.DeliverySelection 
        orderby t.Delivery.SubmissionDate descending 
        select t; 
+47

+1. Tôi ghét những người downvote mà không đưa ra một lý do. – jp2code

+0

bao gồm tương đương với DataLoadOptions dlo = new DataLoadOptions(); dlo.LoadWith (i => i.Delivery); ctn.LoadOptions = dlo; – mrosiak

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