Как получить максимальное значение столбца с помощью Entity Framework?

чтобы получить максимальное значение столбца, содержащего целое число, я могу использовать следующий T-SQL comand

SELECT MAX(expression )
FROM tables
WHERE predicates;

можно ли получить тот же результат с Entity Framework.

предположим, у меня есть следующая модель

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

как я могу получить возраст самого старого человека?

int maxAge = context.Persons.?

7 ответов


попробуй такое int maxAge = context.Persons.Max(p => p.Age);

и using System.Linq; в верхней части файла


Если список пуст, я получаю исключение. Это решение будет учитывать этот вопрос:

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

или вы можете попробовать это:

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

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

или что-то в этом роде.


может помочь, если вы хотите добавить фильтр:

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

на VB.Net было бы

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

как многие сказали-это версия

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

создает исключение, когда таблица пуста.

использовать

int maxAge = context.Persons.Max(x => (int?)x.Age) ?? 0;

или

int maxAge = context.Persons.Select(x => x.Age).DefaultIfEmpty(0).Max()