LINQ Orden por consulta descendente

Estoy seguro de que este será relativamente simple.

Tengo una consulta LINQ que deseo 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 he intentado:

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

pero esto da un error:

Sin sobrecarga para el método ‘OrderByDescending’ toma 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 🙂

OrderByDescending elegir una propiedad para clasificar y pasarla como una expresión lambda a OrderByDescending

me gusta:

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

Realmente, aunque la primera versión de tu statement LINQ debería funcionar. ¿La t.Delivery.SubmissionDate está realmente poblada con fechas válidas?

Creo que esto falló primero porque está ordenando un valor que es nulo. Si Delivery 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; 

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); 

Solo para mostrarlo en un formato diferente que prefiero usar por alguna razón: la primera forma devuelve su itemList como System.Linq.IOrderedQueryable

 using(var context = new ItemEntities()) { var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection) .OrderByDescending(x => x.Delivery.SubmissionDate); } 

Ese enfoque está bien, pero si lo quiere directamente en un objeto de lista:

 var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection) .OrderByDescending(x => x.Delivery.SubmissionDate).ToList(); 

Todo lo que tiene que hacer es agregar una llamada .ToList () al final de la consulta.

Algo que notar, fuera de mi cabeza, no puedo recordar si la expresión! (No) es aceptable en la llamada Where ().