/ / Skip wird derzeit nicht von der Data Service-Toolkit-Ausnahme unterstützt - asp.net, linq, webforms

Überspringen wird derzeit nicht von der Data Service Toolkit-Ausnahme unterstützt - asp.net, linq, webforms

Ich versuche, oDataService abzufragen. Wenn ich skip ausprobiere, bekomme ich die Ausnahme "Skip wird derzeit nicht vom Data Service Toolkit unterstützt". Ohne Überspringen wird meine Abfrage ausgeführt.

Dim Students = S in Entity.Students
Select S
OrderBy S.FirstName
Skip(PageSize * PageNumber).Take(PageSize)

Wenn ich Take verliere, funktioniert es immer noch. Wie kann ich das beheben? Gibt es eine andere Möglichkeit, Seitenumbrüche in linq zu erstellen?

Antworten:

0 für die Antwort № 1

Lassen Sie mich hier Klarheit schaffen und dafür sorgen, dass der Code klarer ist.

Dieser Fehler wird von LINQ-Anbietern ausgelöst, die dies tununterstützt nicht, welche Erweiterungsmethode Sie verwenden möchten. In diesem Fall bedeutet dies, dass das Data Service-Toolkit die Skip-Methode nicht unterstützt. Ihre einzige Lösung besteht darin, alles über die gewünschte Anzahl von Elementen zu erhalten und dann diejenigen zu überspringen, die Sie nicht benötigen. Dazu müssen Sie LINQ zwingen, die Abfrage auszuführen, und Ihnen alle Daten als Liste zurückgeben.

Dim BatchStudents = S in Entity.Students
Select S
OrderBy S.FirstName
Take(PageSize * PageNumber + PageSize).ToList()

Dim Students = BatchStudents.Skip(PageSize * PageNumber).ToList()

Wenn Sie diese in separate Anweisungen (und Variablen) aufteilen, können Sie weitere Probleme mit dem Casting aufspüren.

Warnung: Wenn Sie dies tun, wird PageSize * abgerufenPageNumber + PageSize Elemente aus der Datenquelle, erwarten Sie daher einen großen Download dieser Remote-Daten, wenn die Seitenzahl zunimmt. Dies liegt nur daran, dass der Provider das Überspringen nicht unterstützt. Die erste ToList () zwingt LINQ, die Abfrage auszuführen und die Ergebnisse abzurufen. Die zweite Variablenzuweisung ist das Überspringen von Elementen im Speicher (die Elemente wurden bereits heruntergeladen).