Ik weet zeker dat dit relatief eenvoudig zal zijn.
Ik heb een LINQ-query die ik wil bestellen op de laatst aangemaakte datum.
Zie:
var itemList = from t in ctn.Items
where !t.Items && t.DeliverySelection
orderby t.Delivery.SubmissionDate descending
select t;
Ik heb ook geprobeerd:
var itemList = (from t in ctn.Items
where !t.Items && t.DeliverySelection
select t).OrderByDescending();
maar dit geeft een foutmelding:
Geen overbelasting voor methode
‘OrderByDescending’ heeft 0 argumenten
Van wat ik heb gelezen, ben ik er vrij zeker van dat de eerste manier waarop ik het heb gedaan zou moeten werken. Ik heb geprobeerd aflopend naar oplopend te veranderen om te zien of het iets doet, maar het blijft hetzelfde.
Ik zou het op prijs stellen als iemand naar de vraag zou kunnen kijken om te zien of ik iets verkeerd doe. Bedankt 🙂
Antwoord 1, autoriteit 100%
Je moet een eigenschap kiezen om op te sorteren en deze als lambda-expressie doorgeven aan OrderByDescending
vind ik leuk:
.OrderByDescending(x => x.Delivery.SubmissionDate);
Echt, hoewel de eerste versie van uw LINQ-statement zou moeten werken. Is t.Delivery.SubmissionDate
daadwerkelijk gevuld met geldige datums?
Antwoord 2, autoriteit 26%
Ik denk dat dit eerst is mislukt omdat je een waarde bestelt die null is. Als Levering een tabel met een refererende sleutel is, moet u deze tabel eerst opnemen, het onderstaande voorbeeld:
var itemList = from t in ctn.Items.Include(x=>x.Delivery)
where !t.Items && t.DeliverySelection
orderby t.Delivery.SubmissionDate descending
select t;
Antwoord 3, autoriteit 4%
Ik denk dat de tweede zou moeten zijn
var itemList = (from t in ctn.Items
where !t.Items && t.DeliverySelection
select t).OrderByDescending(c => c.Delivery.SubmissionDate);
Antwoord 4
Gewoon om het in een ander formaat te tonen dat ik om de een of andere reden liever gebruik:
De eerste manier retourneert uw itemList als een System.Linq.IOorderedQueryable
using(var context = new ItemEntities())
{
var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
.OrderByDescending(x => x.Delivery.SubmissionDate);
}
Die aanpak is prima, maar als je het rechtstreeks in een lijstobject wilt hebben:
var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
.OrderByDescending(x => x.Delivery.SubmissionDate).ToList();
Het enige wat u hoeft te doen is een .ToList()-aanroep toevoegen aan het einde van de query.
Iets om op te merken, ik kan me niet herinneren of de !(not)-expressie acceptabel is in de Where()-aanroep.