LINQ-volgorde door aflopende zoekopdracht

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.SubmissionDatedaadwerkelijk 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.

Other episodes