Consulta LINQ Orderby Descendente

Estoy seguro de que esto será relativamente sencillo.

Tengo una consulta LINQ que quiero ordenar por 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 lo 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' toma 0 argumentos

Por lo que he leído, estoy bastante seguro de que la primera forma en que lo he hecho debería funcionar. He probado a cambiar descendente por ascendente sólo para ver si hace algo, pero sigue igual.

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

Solución

Tienes que elegir una propiedad por la que ordenar y pasarla como expresión lambda a OrderByDescending

como:

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

Realmente, aunque la primera versión de tu sentencia LINQ debería funcionar. ¿Está t.Delivery.SubmissionDate realmente poblado con fechas válidas?

Comentarios (1)

Creo que este primer fallo se debe a que está ordenando un valor que es nulo. Si Delivery es una tabla asociada con una clave extranjera, entonces debe incluir esta tabla primero, ejemplo abajo:

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

Creo que la segunda debería ser

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