Orden LINQ por consulta descendente

Resuelto 109221793 asked hace 13 años • 4 respuestas

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

Lo intenté:

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

También he probado:

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

pero esto da un error:

No overload for method 'OrderByDescending' takes 0 arguments

Por lo que he leído, la primera forma debería funcionar. Intenté cambiar descendinga ascendingsolo para ver si hace algo, pero sigue igual.

¿Qué estoy haciendo mal?

109221793 avatar Mar 18 '11 03:03 109221793
Aceptado

Debe elegir una propiedad para ordenar y pasarla como una expresión lambda aOrderByDescending

como:

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

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

Adam Price avatar Mar 17 '2011 20:03 Adam Price

Creo que esto falló primero porque está solicitando un valor que es nulo. Si la entrega es una tabla asociada a una clave externa, primero debe incluir esta tabla, como se muestra 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;
mrosiak avatar Jun 18 '2014 15:06 mrosiak