web-dev-qa-db-fra.com

Comment obtenir l'ID max avec Linq to Entity?

J'ai un utilisateur de table qui a une colonne d'identité UserID, quelle est maintenant la ligne de code correcte Linq vers entité qui me renverrait la valeur maximale UserID?

J'ai essayé:

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

    return user.UserID;
}

mais Last et Max ne semblent pas être pris en charge.

Des idées?

69
Ray Fan

Faire ça comme ça

db.Users.OrderByDescending(u => u.UserId).FirstOrDefault();
135
Jonas Kongslund

essaye ça

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

Mettre à jour:

Si aucun enregistrement ne génère une exception en utilisant le code ci-dessus, essayez ceci

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

NisaPrieto 

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

ne fonctionnera pas car MAX renvoie le même type de variable que le champ. Il s'agit donc d'un objet INT et non d'un utilisateur.

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

lorsqu'il n'y a pas d'enregistrements dans la base de données, il renvoie 0 sans exception.

9
Harsha.Vaswani

Si vous utilisez les fonctions async et await, ce serait comme suit:

User currentUser = await db.Users.OrderByDescending(u => u.UserId).FirstOrDefaultAsync();
2
Psi-Ed

Le meilleur moyen d'obtenir l'identifiant de l'entité que vous avez ajoutée est le suivant:

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