wake-up-neo.com

Wie bekomme ich die maximale ID mit Linq to Entity?

Ich habe eine Tabelle User, die eine Identitätsspalte UserID hat. Was ist nun die richtige Codezeile von Linq to Entity, die mir die maximale UserID zurückgibt?

Ich habe es versucht:

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

    return user.UserID;
}

Last und Max scheinen jedoch nicht unterstützt zu werden.

Irgendwelche Ideen?

69
Ray Fan

Mach das so

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

versuche dies

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

Update:

Wenn kein Datensatz vorhanden ist, generieren Sie eine Ausnahme mit dem obigen Code

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); 

funktioniert nicht, da MAX denselben Variablentyp wie das Feld zurückgibt. In diesem Fall handelt es sich um ein INT-Objekt und nicht um ein Benutzerobjekt.

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

wenn in db keine Datensätze vorhanden sind, wird 0 ohne Ausnahme zurückgegeben.

9
Harsha.Vaswani

Wenn Sie die Funktionen async und await verwenden, würde dies folgendermaßen aussehen:

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

Der beste Weg, die ID der hinzugefügten Entität abzurufen, ist wie folgt:

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