Как получить максимальный идентификатор с Linq для Entity? - PullRequest
70 голосов
/ 25 ноября 2008

У меня есть таблица User, у которой есть столбец идентификаторов UserID, теперь какая правильная строка кода Linq to Entity выдаст мне максимум UserID?

Я пробовал:

using (MyDBEntities db = new MyDBEntities())
{
    var User = db.Users.Last();
    // or
    var User = db.Users.Max();

    return user.UserID;
}

но Last и Max не поддерживаются.

Есть идеи?

Ответы [ 6 ]

137 голосов
/ 25 ноября 2008

Сделай вот так

db.Users.OrderByDescending(u => u.UserId).FirstOrDefault();
92 голосов
/ 27 марта 2009

попробуйте

int intIdt = db.Users.Max(u => u.UserId);

Обновление:

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

int? intIdt = db.Users.Max(u => (int?)u.UserId);
10 голосов
/ 18 августа 2010

NisaPrieto

Users user = bd.Users.Where(u=> u.UserAge > 21).Max(u => u.UserID); 

не будет работать, поскольку MAX возвращает переменную того же типа, что и поле, поэтому в этом случае INT не является объектом User.

9 голосов
/ 15 мая 2015
var max = db.Users.DefaultIfEmpty().Max(r => r == null ? 0 : r.ModelID);

если в БД нет записей, возвращается 0 без исключения.

2 голосов
/ 12 декабря 2016

В случае, если вы используете функции async и await, это будет выглядеть следующим образом:

User currentUser = await db.Users.OrderByDescending(u => u.UserId).FirstOrDefaultAsync();
0 голосов
/ 10 апреля 2017

Лучший способ получить идентификатор добавленной вами сущности выглядит так:

public int InsertEntity(Entity factor)
{
    Db.Entities.Add(factor);
    Db.SaveChanges();
    var id = factor.id;
    return id;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...