/ / Skip non è attualmente supportato dall'eccezione del kit di strumenti del servizio dati - asp.net, linq, webforms

Skip non è attualmente supportato dall'eccezione del tool kit Data Service - asp.net, linq, webforms

Sto cercando di interrogare oDataService. Se provo a saltare, ricevo l'eccezione "Skip non è attualmente supportata dal kit di strumenti Data Service". Senza saltare, la mia query viene eseguita.

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

Se esco da Take, funziona ancora. Come posso risolvere questo? C'è un modo diverso di fare l'impaginazione in linq?

risposte:

0 per risposta № 1

Consentitemi di fornire qui la risposta per chiarezza e per assicurarmi che il codice sia più chiaro.

Questo errore viene generato dai provider LINQ che lo fannonon supporta alcun metodo di estensione che stai tentando di utilizzare. In questo caso, significa che il kit di strumenti Data Service non supporta il metodo Skip. La tua unica soluzione è ottenere tutto attraverso il numero di elementi che desideri, quindi saltare quelli che non ti servono. Ciò richiede che tu costringa LINQ ad eseguire la query e restituisca tutti i dati come prima lista.

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

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

Rompendo questi in dichiarazioni separate (e variabili) contribuirà a rintracciare eventuali ulteriori problemi con il casting.

avvertimento: Così facendo recupererà PageSize *PageNumber + PageSize elementi dall'origine dati, quindi aspettarsi un grande download di tali dati remoti all'aumentare del numero di pagina. Questo è solo perché il provider non supporta il salto. Il primo ToList () forza LINQ per eseguire la query e ottenere i risultati. La seconda assegnazione della variabile sta saltando gli elementi in memoria (gli elementi sono già stati scaricati).