Как получить максимальный ID с Linq для Entity?

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

Я пробовал:

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

    return user.UserID;
}

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

Любые идеи?

Ответ 1

Попробуйте

db.Users.OrderByDescending(u => u.UserId).FirstOrDefault()

Ответ 2

попробуйте это

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

Update:

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

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

Ответ 3

NisaPrieto

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

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

Ответ 4

var max = db.Users.DefaultIfEmpty().Max(r => r == null ? 0 : r.ModelID);

когда нет записей в db, он будет возвращать 0 без каких-либо исключений.

Ответ 5

Если вы используете функции async и await, это будет следующим:

User currentUser = await db.Users.OrderByDescending(u => u.UserId).FirstOrDefaultAsync();

Ответ 6

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

public int InsertEntity(Entity factor)
{
    Db.Entities.Add(factor);
    Db.SaveChanges();
    var id = factor.id;
    return id;
}