2012-02-04 39 views
20

tôi đã bàn này được đặt tên mẫu với các giá trị trong MS Sql Server:tối đa trong LINQ

ID Date Description 
1 2012/01/02 5:12:43 Desc1 
2 2012/01/02 5:12:48 Desc2 
3 2012/01/03 5:12:41 Desc3 
4 2012/01/03 5:12:43 Desc4 

Bây giờ tôi muốn viết LINQ truy vấn mà kết quả sẽ là thế này:

4 2012/01/03 5:12:43 Desc4 

tôi viết này, nhưng nó không hoạt động:

List<Sample> q = (from n in Sample.Max(T=>T.Date)).ToList(); 
+0

'select' của bạn ở đâu? – Tigran

Trả lời

37

Sử dụng:

var result = Sample.OrderByDescending(t => t.Date).First(); 
2
List<Sample> q = Sample.OrderByDescending(T=>T.Date).Take(1).ToList(); 

Nhưng tôi nghĩ rằng bạn muốn

Sample q = Sample.OrderByDescending(T=>T.Date).FirstOrDefault(); 
17

Để có được tối đa Sample giá trị theo ngày mà không phải sắp xếp (mà không phải là thực sự cần thiết để chỉ nhận được tối đa):

var maxSample = Samples.Where(s => s.Date == Samples.Max(x => x.Date)) 
         .FirstOrDefault(); 
+0

điều này có độ phức tạp tương tự như câu trả lời được chấp nhận yêu cầu đặt hàng, theo như tôi hiểu – knocte

+0

nhưng vẫn dễ đọc hơn, tôi đoán – knocte

+2

@knocte không có sự phức tạp nào - đây là O (n) - 2 lượt cần thiết, mỗi O (n) - phân loại sẽ là O (n log n) vì vậy tốn kém hơn – BrokenGlass

1
var lastInstDate = model.Max(i=>i.ScheduleDate); 

Chúng ta có thể lấy ngày tối đa từ mô hình như thế này.

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