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



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



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.?
617   7  

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();

In 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()

Comments

    Ничего не найдено.