2011-09-19 11 views
5

ho espressione LINQ comeHo alcuni problemi con l'espressione LINQ, OrderBy(), Skip(), Take() funziona corretta

var a = ctx.EntitySet 
     .OrderByDescending(t => t.Property) 
     .Skip(pageIndex * size) 
     .Take(size); 

OrderBy() dovrebbe chiamare prima di Skip() e Take(), ma lo smistamento avviene alla fine. Posso risolvere questo problema?

Scusate, molte persone non hanno capito la mia domanda. Query viene eseguita senza errori, ma voglio

//It is I want 
1) Sorting ALL data 
2) Use Skip() and Take() 

Quello che ho in seguito se lo faccio come a mio esempio: 1) Skip() 2) Prendere() 3) Ordinamento solo elementi taked!

+1

Questo è il modo corretto di farlo aiuta, qual è il vero problema? – cjk

+0

Poiché la query sembra soddisfacente, è possibile passare la query sql generata poiché essa sembra scritta correttamente. http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx –

+0

Non dimenticare di contrassegnare la risposta come accettata se hai le informazioni che vuoi –

risposta

0

Hai provato questo

se si va per sotto soluzione esso deve prima ottenere i record e che non l'ordinamento su quel record che si possono portare a risultato sbagliato.

var a = ctx.EntitySet 
     .Skip(pageIndex * size) 
     .Take(size); 

a = a.OrderByDescending(t => t.Property); 

o

modo seguente per la prima volta a fare la cernita e di ottenere record dopo che, così in questo modo è possibile ottenere il risultato desiderato, questo è il corretto modo di fare

var a = ctx.EntitySet 
    .OrderByDescending(t => t.Property) 
    .Skip(pageIndex * size) 
    .Take(size); 

Ma dipende sempre dalle tue esigenze quello che vuoi ....

0

ordini di comando in questo esempio non è Importante. ordinerà prima i tuoi dati e successivamente i tuoi dati saranno raccolti.

2

non so perché, ma in qualche modo funziona per me, spero che si

var a1 = from p in ctx.EntitySet 
     .OrderByDescending(t => t.Property) 
     select p; 

var a2 = from p in a1 
     .Skip(pageIndex * size) 
     .Take(size) 
     select p; 
Problemi correlati