2011-09-19 12 views
5

Tengo expresión LINQ comoque tienen algunos problemas con la expresión LINQ, OrdenarPor(), Saltar(), Tomar() funciona incorrectos

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

OrdenarPor() debe llamar antes de salto() y Take(), pero la clasificación ocurre al final. ¿Puedo resolver este problema?

Lo siento, muchas personas no entendieron mi pregunta. Consulta se ejecuta sin errores, pero quiero

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

Lo que tengo en consecuencia si lo hago como en mi ejemplo: 1) Ir() 2) Tomar() 3) Clasificación solamente elementos taked!

+1

Esta es la forma correcta de hacerlo ayuda, ¿cuál es el problema real? – cjk

+0

Dado que la consulta se ve bien, puede pasar la consulta SQL generada ya que tal como está escrita parece estar bien. http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx –

+0

No olvide marcar la respuesta como aceptada si obtuvo la información que desea –

Respuesta

0

Has probado esto

si usted va para abajo solución en primer lugar obtendrá los registros y que no clasificación en que los registros que pueden conducir a un resultado erróneo.

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

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

o

Siguiendo forma en que primero hacer la clasificación y que consiguiendo registros después de eso, por lo que de esta manera se puede obtener el resultado que desea, esta es la forma correcta de hacer

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

Pero siempre depende de su requerimiento lo que desee ....

0

ordenes de comando en esta muestra no es importante. primero ordenará sus datos y luego se recopilarán sus datos.

2

no sé por qué, pero de alguna manera funciona para mí, espero que usted

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; 
Cuestiones relacionadas