2011-09-24 41 views
54

Để có được giá trị lớn nhất của một cột có chứa số nguyên, tôi có thể sử dụng COMAND T-SQL sauCách lấy giá trị tối đa của cột bằng cách sử dụng Khung thực thể?

SELECT MAX(expression) 
FROM tables 
WHERE predicates; 

Có thể để có được những kết quả tương tự với Entity Framework.

Chúng ta hãy nói rằng tôi đã mô hình sau

public class Person 
{ 
    public int PersonID { get; set; } 
    public int Name { get; set; } 
    public int Age { get; set; } 
} 

Làm thế nào để có được độ tuổi người cao tuổi nhất không?

int maxAge = context.Persons.? 

Trả lời

93

Hãy thử điều này int maxAge = context.Persons.Max(p => p.Age);

Và chắc chắn rằng bạn có using System.Linq; ở phía trên cùng của tập tin của bạn

+1

Great câu trả lời, cảm ơn. –

+0

Tôi xâu chuỗi một chút với điều này vì tôi đã bỏ lỡ "using System.Linq;" Bạn nên cân nhắc thêm thông tin đó vào câu trả lời cho những người mới như tôi :) – RagnaRock

+1

Không có vấn đề @RagnaRock – krolik

5
maxAge = Persons.Max(c => c.age) 

hoặc một cái gì đó dọc theo những đường.

6

Hoặc bạn có thể thử điều này:

(From p In context.Persons Select p Order By age Descending).FirstOrDefault 
2

Trong VB.Net nó sẽ là

Dim maxAge As Integer = context.Persons.Max(Function(p) p.Age) 
9

Nếu danh sách rỗng tôi nhận được một ngoại lệ. Giải pháp này sẽ đưa vào tài khoản vấn đề này:

int maxAge = context.Persons.Select(p => p.Age).DefaultIfEmpty(0).Max(); 
+1

Đây phải là câu trả lời được chấp nhận. Chỉ một chuyến đi khứ hồi tới máy chủ và không có ngoại lệ. – 9Rune5

2

lẽ giúp đỡ, nếu bạn muốn thêm một số bộ lọc:

context.Persons 
.Where(c => c.state == myState) 
.Select(c => c.age) 
.DefaultIfEmpty(0) 
.Max(); 
Các vấn đề liên quan