Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Entity Framework Core Grundkurs

Paging mit Skip und Take

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Große Datenmengen werden häufig nicht komplett geladen und dargestellt, sondern seitenweise über Paging bzw. Paginierung. Die dazu notwendigen Befehle Skip und Take erläutert dieser Film.
05:48

Transkript

Der Code, den Sie hier sehen, der gibt eine Liste aller Fahrten aus. Aktuell haben wir und das sehen wir, wenn ich das Programm einmal starte, 100 Fahrten. Nun haben es Daten so an sich, dass sie im Laufe der Zeit wachsen. Und das würde bedeuten, dass der Code, so wie er jetzt ist, vielleicht in einigen Jahren, wenn viele Fahrten in meiner Anwendung erfasst worden sind, Millionen von Datensätzen ausgibt. Natürlich möchte kein Benutzer eine Liste von Million von Datensätzen sehen, durch die er hoch- und runterscrollen muss, sondern typischerweise implementieren wir in solchen Situationen Paging. Sie kennen das von Suchmaschinen wie Google. Wenn Sie bei Google einen Suchbegriff eintippen, meinetwegen Sie tippen dort "Video Training" ein, dann erhalten Sie vielleicht 1 Millionen Ergebnisse. Aber die nicht alle auf der ersten Seite, sondern Sie erhalten ein paar wenige, vielleicht zehn oder zwanzig Stück auf der ersten Seite. Und dann können Sie seitenweise durchblättern. Diese Funktion nennt sich Paging oder Deutsch Paginierung. Und genau das möchten wir hier in diesem Beispiel nun auch implementieren. Dazu möchte ich ganz gerne pro Seite 10 Einträge ausgeben. Dazu deklariere ich eine Variable mit dem Namen "pageSize". Und dieser Variablen weise ich die gewünschte Seitengröße zu. Also, 10 Stück. Als nächstes muss ich nun berechnen wie viele Seiten ich denn habe. Und das mache ich relativ einfach. Ich deklariere eine Variable mit dem Namen "pages". Und hier nehmen wir einfach die Anzahl der Fahrten und dividieren diese durch unsere Seitengröße. Also, 10. In meinem Beispiel kommt also auch 10 heraus. Und nun muss ich folgendes machen. Jetzt, wo ich weiß, wie viele Seiten ich habe, muss ich eine Schleife um diesen Teil hier unten legen, die für jede Seite einmal durchläuft. Und am Ende der Schleife werde ich einfach einen Tastendruck abwarten, damit wir dann seitenweise durchkommen. Das Umschließen mit der Schleife erreiche ich, indem ich den Code markiere und dann die Tastenkombination Strg + K + S drücke. Die steht für "Umschließen mit" und hier wähle ich "for" aus. Sie sehen hier, dass um meinen Code herum eine For-Schleife erzeugt worden ist. Und hier definiere ich nun, dass meine Laufvariable nicht "i", sondern "currentPage" heißen soll. Und "currentPage" geht von 0 bis zu einer kleineren Zahl als "pages". Und nun werde ich hier unten das Console.ReadLine einfügen, damit nach jeder Seite einmal gestoppt wird. Allerdings schaut es nun so aus, dass ich immer noch alle Fahrten lese und das einfach nur jetzt 10 Mal. Also, muss ich das Ganze einschränken. Diese Einschränkung geschieht wie folgt. Ich verschiebe den Code zur Selektion hier unten hinein und rücke den entsprechend ein. Und nun kann ich zwei LINQ Extensions zum Messen nutzen, nämlich Skip und Take. Mit Take gebe ich an, wie viele Datensätze ich gerne laden möchte. Und in meinem Fall ist das die "pageSize", also 10. Anschließend muss ich noch definieren, wie viele Datensätze übersprungen werden sollen. Und im ersten Schritt auf der ersten Seite sollen 0 Datensätze übersprungen werden. Ich möchte also vom 1 bis zum 10 gehen. Bei der zweiten Seite sollen 10 übersprungen werden. Bei der dritten - 20. Heißt, wir können das relativ simple berechnen. Ich schreibe hier also: er soll die currentPage mal die pageSize nehmen. Bedeutet also, wir rechnen für den ersten Durchlauf 10 mal 0, so ein 0, es wären also 0 Datensätze übersprungen und dann 10 selektiert. Für den zweiten Durchlauf haben wir 1 mal 10, werden also 10 Datensätze überspringen. Beim dritten Durchlauf sind es 2 mal 10, also 20, die übersprungen werden. Und das passt dann ganz genau mit dem zusammen, was wir ganz gerne hätten. Ich breche das noch ein wenig um, damit es ein wenig besser lesbar ist. Und wenn ich mein Code jetzt starte, dann werden wir sehen, dass ich immer 10 Datensätze erhalte. Wir sehen auch hier oben, dass das Ganze über eine Offset-Klausel entsprechend eingeschränkt worden ist. Und wenn ich jetzt Enter drücke, dann kommen die nächsten 10 Datensätze und so weiter. Was in diesem Zusammenhang wichtig ist, ist dass Sie "Skip" und "Take" in der richtigen Reihenfolge schreiben. Wenn Sie nämlich zuerst "Take" schreiben, also Take 10, dann werden die ersten 10 Datensätze selektiert. Wenn Sie anschließend das "Skip" haben und zum Beispiel sich auf der zweiten Seite befinden, wo also die ersten 10 übersprungen werden, dann würde Ihr SQL Statement sagen: hole die ersten 10 und danach überspringe 10. Und dann kommt 0 als Ergebnismenge zurück, weil er ja nur 10 Datensätze hatte, die selektiert worden sind. Bedeutet also für Sie, wenn Sie Paging implementieren möchten... Und das macht auf jeden Fall in Web-Anwendungen Sinn. Das macht aber auch in Desktop-Anwendungen Sinn, denn auch in Desktop-Anwendungen, wenn Sie jetzt Ihre Daten zum Beispiel an einen Grid binden, dann wollen Sie auch nicht vielleicht eine Million Datensätze direkt binden, sondern erst beim Scrollen immer wieder Daten nachladen. Auf jeden Fall sollten Sie, wenn Sie Paging implementieren, immer darauf achten: "Skip" und "Take" in der richtigen Reihenfolge zu benutzen.

Entity Framework Core Grundkurs

Lernen Sie die Features von Microsofts O/R-Mapper kennen und wie Sie ihn in praktischen Anwendungen einsetzen.

2 Std. 29 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!