Je suis sûr que ce sera relativement simple.
J'ai une requête LINQ que je souhaite commander à la date de création la plus récente.
Voir:
var itemList = from t in ctn.Items
where !t.Items && t.DeliverySelection
orderby t.Delivery.SubmissionDate descending
select t;
J'ai aussi essayé:
var itemList = (from t in ctn.Items
where !t.Items && t.DeliverySelection
select t).OrderByDescending();
mais cela donne une erreur:
Pas de surcharge pour la méthode 'OrderByDescending' prend 0 argument
D'après ce que j'ai lu, je suis à peu près sûr que la première façon de procéder devrait fonctionner. J'ai essayé de passer de descendant à croissant juste pour voir si ça fait quelque chose mais ça reste pareil.
Je serais reconnaissant si quelqu'un pouvait examiner la question et voir si je fais quelque chose de mal. Merci :)
Vous devez choisir une propriété à trier et la transmettre en tant qu’expression lambda à OrderByDescending
comme:
.OrderByDescending(x => x.Delivery.SubmissionDate);
Vraiment, la première version de votre déclaration LINQ devrait fonctionner. Est-ce que t.Delivery.SubmissionDate
est rempli avec les dates valides?
Je pense que cette première a échoué parce que vous commandez la valeur qui est nulle. Si Delivery est une table associée à une clé étrangère, vous devez d'abord l'inclure, exemple ci-dessous:
var itemList = from t in ctn.Items.Include(x=>x.Delivery)
where !t.Items && t.DeliverySelection
orderby t.Delivery.SubmissionDate descending
select t;
Je pense que le second devrait être
var itemList = (from t in ctn.Items
where !t.Items && t.DeliverySelection
select t).OrderByDescending(c => c.Delivery.SubmissionDate);
Juste pour le montrer dans un format différent que je préfère utiliser pour une raison quelconque: La première façon renvoie votre itemList en tant que System.Linq.IOrderedQueryable
using(var context = new ItemEntities())
{
var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
.OrderByDescending(x => x.Delivery.SubmissionDate);
}
Cette approche convient, mais si vous le vouliez directement dans un objet de liste:
var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
.OrderByDescending(x => x.Delivery.SubmissionDate).ToList();
Tout ce que vous avez à faire est d’ajouter un appel .ToList () à la fin de la requête.
Quelque chose à noter, de mémoire, je ne me souviens pas si l'expression! (Not) est acceptable dans l'appel Where ().