Как получить максимальный идентификатор с помощью Linq to Entity?


у меня есть таблица пользователей, которая имеет столбец идентификаторов 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 кажется, не поддерживается.

какие идеи?

6 66

6 ответов:

попробовать

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

попробуй такое

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

обновление:

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

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

NisaPrieto

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

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

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

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

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

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

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

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