2011-09-24 122 views
54

獲取包含整數列的最大值,我可以使用下面的T-SQL COMAND如何使用Entity Framework獲取列的最大值?

SELECT MAX(expression) 
FROM tables 
WHERE predicates; 

是否有可能獲得與實體框架相同的結果。

比方說,我有以下型號

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

如何獲得最老的人的年齡?

int maxAge = context.Persons.? 

回答

93

試試這個int maxAge = context.Persons.Max(p => p.Age);

並確保您有using System.Linq;在你的文件

+1

偉大的答案,謝謝。 –

+0

因爲我錯過了「使用System.Linq;」,所以我對此有點不解。 你應該考慮將這些信息添加到你的答案像我這樣的新手:) – RagnaRock

+1

沒問題@RagnaRock – krolik

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

或東西沿着這些線路的頂部。

6

或者你可以試試這個:

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

VB.Net這將是

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

如果列表是空的,我得到一個例外。該解決方案將考慮到這個問題:

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

這應該是被接受的答案。 只有一次來回服務器,沒有例外。 – 9Rune5

2

也許幫助,如果你想添加一些過濾器:

context.Persons 
.Where(c => c.state == myState) 
.Select(c => c.age) 
.DefaultIfEmpty(0) 
.Max();