Ответ 1
Попробуйте
db.Users.OrderByDescending(u => u.UserId).FirstOrDefault()
У меня есть таблица 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
, похоже, не поддерживаются.
Любые идеи?
Попробуйте
db.Users.OrderByDescending(u => u.UserId).FirstOrDefault()
попробуйте это
int intIdt = db.Users.Max(u => u.UserId);
Update:
Если никакая запись не генерирует исключение, используя вышеприведенный код, попробуйте это
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);
когда нет записей в db, он будет возвращать 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;
}