c# - LINQ Orderby Consulta Descendente
order by date c# (4)
Estoy seguro de que esto será relativamente simple.
Tengo una consulta LINQ que quiero ordenar antes de 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:
Ninguna 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 hice debería funcionar. He intentado cambiar de descendente a ascendente solo para ver si hace algo 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 :)
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);
Creo que esto falló primero porque estás ordenando valor que es nulo. Si la Entrega es una tabla asociada a una clave externa, debe incluir esta tabla primero, 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;
Solo para mostrarlo en un formato diferente que prefiero usar por alguna razón: La primera forma devuelve su itemList como un 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 quisieras 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 adjuntar una llamada .ToList () al final de la consulta.
Algo a tener en cuenta, desde la parte superior de mi cabeza, no puedo recordar si la expresión! (Not) es aceptable en la llamada Where ().
OrderByDescending
elegir una propiedad para ordenar y pasarla como una expresión lambda a OrderByDescending
me gusta:
.OrderByDescending(x => x.Delivery.SubmissionDate);
Realmente, aunque la primera versión de su declaración LINQ debería funcionar. ¿Se t.Delivery.SubmissionDate
con fechas válidas?