EntityFramework tun Auslagerung auf eine Abfrage mit einem join
Ich habe eine Abfrage mit einem left join in:
var query = (from v in context.Vehicles
//left join vehicleAttributes
join va in context.VehicleAttributes on v.VehicleId equals va.VehicleId into vAttributes
from vehicleAttributes in vAttributes.DefaultIfEmpty()
where v.FleetId == fleetId
select new { v, vehicleAttributes });
Und jetzt muss ich tun, um einen paging auf.
funktioniert es, aber erhält alle Zeilen, so viel mehr als ich eigentlich brauche
query.ToList().Select(x => x.v).Distinct().Skip(10 * (page - 1)).Take(10).ToList();
dies ist, was ich versucht habe statt aber jetzt habe ich nicht die gemeinsamen Werte
query.Select(x => x.v).Distinct().ToList().Skip(10 * (page - 1)).Take(10).ToList();
irgendwelche Ideen?
Dank
- Tun Sie das implementieren von paging erfolgreich, denn ich möchte das implementieren von paging auf einen repeater ein, die ich nicht weiterkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die ToList () - Trigger der Aufruf der Datenbank, so müssen Sie dies nur tun, nachdem Sie das Überspringen und Nehmen. Sie benötigen einen OrderBy-Klausel.
Sollten Sie in der Lage sein, so etwas zu tun:
Nicht nennen
ToList
vorSkip
. Damit werden wieder alle Datensätze in der Datenbank, die Ihrer Abfrage entsprechen.Verwenden
Skip
auf ein Entity Framework Abfragen, müssen Sie eine Instanz derIOrderedQueryable
, so brauchen Sie eineOrderBy
- Klausel.Ich habe ein Projekt, kümmert sich um viele dieser Funktionen. Es ist verfügbar auf NuGet (mit einem
MVC
Gegenstück) und Google Code.Verwenden, es würde in etwa so Aussehen: