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?
Mach das so
db.Users.OrderByDescending(u => u.UserId).FirstOrDefault();
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);
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.
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.
Wenn Sie die Funktionen async
und await
verwenden, würde dies folgendermaßen aussehen:
User currentUser = await db.Users.OrderByDescending(u => u.UserId).FirstOrDefaultAsync();
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;
}