2011-03-17 25 views
329

Estoy seguro de que este será relativamente simple.LINQ Orden por consulta descendente

Tengo una consulta LINQ que deseo ordenar en la fecha de creación más reciente.

Ver:

 var itemList = from t in ctn.Items 
         where !t.Items && t.DeliverySelection 
         orderby t.Delivery.SubmissionDate descending 
         select t; 

También he intentado:

 var itemList = (from t in ctn.Items 
         where !t.Items && t.DeliverySelection 
         select t).OrderByDescending(); 

pero esto da un error:

No hay sobrecarga para el método 'OrderByDescending' tiene 0 argumentos

Por lo que he leído, estoy bastante seguro de que la primera manera en que lo hice debería funcionar. Intenté cambiar de forma descendente a ascendente solo para ver si funciona, pero sigue siendo el mismo.

Estaría agradecido si alguien pudiera echar un vistazo a la consulta y ver si estoy haciendo algo mal. Gracias :)

Respuesta

511

Usted tiene que elegir una propiedad para ordenar y pasarlo como una expresión lambda a OrderByDescending

como:

.OrderByDescending(x => x.Delivery.SubmissionDate); 

En realidad, aunque la primera versión de su LINQ declaración debería funcionar ¿Está t.Delivery.SubmissionDate realmente poblado con fechas válidas?

+0

Hola optus, gracias por su respuesta. Ya descubrí cuál era el problema. Estaba usando una paginatedList, y en realidad estaba haciendo el pedido de esa clase de ayuda. Marcaré su respuesta como correcta una vez que se acabe el límite de tiempo :) – 109221793

23

creo que el segundo debe ser

var itemList = (from t in ctn.Items 
       where !t.Items && t.DeliverySelection 
       select t).OrderByDescending(c => c.Delivery.SubmissionDate); 
+0

double descending? – Snowbear

+0

Creo que para ser justo con él, escribí incorrectamente la consulta cuando publiqué (es decir, me fui en la segunda línea de la última orden) y probablemente solo copió y pegó para demostrar el uso de la lambda OrderByDescending. – 109221793

+0

Sí ... lo siento. No fue un error de copiar/pegar. Yo lo editaré. – Jonathan

122

Creo que esta primera fracasó porque usted está pidiendo valor que es nulo. Si la entrega es una tabla asociada a una clave externa, primero debe incluir esta tabla, ejemplo a continuación:

var itemList = from t in ctn.Items.Include(x=>x.Delivery) 
        where !t.Items && t.DeliverySelection 
        orderby t.Delivery.SubmissionDate descending 
        select t; 
+47

+1. Odio a la gente que rechaza sin dar una razón. – jp2code

+0

include es equivalente a DataLoadOptions dlo = new DataLoadOptions(); dlo.LoadWith (i => i.Delivery); ctn.LoadOptions = dlo; – mrosiak

Cuestiones relacionadas