2016-08-03 44 views
0

Ich überprüfte die beantworteten Fragen, aber keine von ihnen adressieren das Problem, das ich habe.Holen Sie sich das nächste Element in Lambda-Ausdruck

Ich brauche nur die nächste Punkt aus den Tabellen Cars (SQL Server-Datenbank) zu bekommen, und ich habe die folgende Abfrage für die EF, die irgendwie die überspringen ignoriert:

var carid = value; 
var car = db.Cars.Where(c => c.CarID == carid).OrderBy(c => c.CarID).Skip(1).FirstOrDefault(); 
Response.Write(car.CarID); 

Es immer liefert das gleiche Element wie Anfangswert. Ich denke, zuerst oder nicht ist der Weg zu gehen.

Danke

+0

Sie führen immer dieselbe Abfrage aus, warum erwarten Sie, dass sich die Ergebnisse ändern? – Stilgar

+0

Ja, aber der ** Wert ändert sich jedes Mal .. es ist eine Variable. Thx –

+0

Sag, dass Var Carid = Wert; ist var carid = 123; Ich brauche den Gegenstand mit CarID 124. Wie mache ich das? Danke –

Antwort

1

Der richtige Code ist wahrscheinlich

var carid = value; 
var car = db.Cars.Where(c => c.CarID > carid).OrderBy(c=> c.CarID).FirstOrDefault(); 
//needs a null check before using car 
Response.Write(car.CarID); 

(beachten Sie die> in der where)

jedoch die Tatsache, dass Ihre vorherigen Code einen Wert zurückgeben haben (im Gegensatz zu null) bedeutet, dass Sie mehrere Datensätze mit derselben CarID haben. Das scheint falsch zu sein.

Beachten Sie auch, dass der richtige Code automatisch inkrementierende IDs in der Datenbank erfordert.

+0

große Antwort :) –