framework c# linq entity-framework linq-to-entities

framework - max linq to sql c#



¿Cómo obtengo la identificación máxima con Linq to Entity? (6)

En caso de que use la función async y await , sería de la siguiente manera:

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

Tengo un usuario de tabla que tiene una UserID usuario de columna de identidad, ¿cuál es la línea de código Linq to Entity correcta que me devolvería el UserID máximo?

He intentado:

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

pero Last y Max no parecen ser compatibles.

¿Algunas ideas?


La mejor forma de obtener el ID de la entidad que agregó es la siguiente:

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


NisaPrieto

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

no funcionará porque MAX devuelve el mismo tipo de variable que el campo, por lo que en este caso es un INT, no un objeto de Usuario.


Prueba con

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


prueba esto

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

Actualizar:

Si no hay registro, genere una excepción usando el código anterior, intente esto

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


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

cuando no hay registros en db, devolvería 0 sin excepción.