Offensichtlich kann ich die obige Lösung, die von Fujiy zur Verfügung gestellt wurde, nicht kommentieren, aber ich habe den folgenden Fehler entdeckt:
Innerhalb GetEnumerator() wird die Inkrementierung im else-Zweig immer dazu führen, dass die Sammlung ein Standardelement überspringt, es sei denn, Sie befinden sich auf der letzten Seite der PagedList.
Ein Beispiel: Sie möchten eine seitenweise Liste mit 5 Elementen erstellen, mit Startindex 3 und 1 Element pro Seite. Dies könnte den else-Zweig für Element 2 eingeben. Es würde i auf 3 inkrementieren und dann zurück in den for-Header gehen, wo es auf 4 inkrementieren würde, ohne ein Standardelement für i == 3 zu erstellen.
- i == 1 -> Standard
- i == 2 -> Standard
- i == 3 -> Tatsächliches Element
- i == 4 -> Übersprungen
- i == 5 -> Standard
Eine einfache Lösung wäre, entweder 3 for-Schleifen zu verwenden (eine für Standardwerte vor der ActualPage, eine für die ActualPage und eine für Elemente nach der ActualPage). Oder man fügt ein i-- nach der For-Schleife innerhalb des Else-Zweigs ein.