it-swarm.com.de

LINQ-Abfrage nach absteigender Reihenfolge

Ich bin mir sicher, dass dies relativ einfach sein wird.

Ich habe eine LINQ-Abfrage, die ich bis zum zuletzt erstellten Datum bestellen möchte.

Sehen:

        var itemList = from t in ctn.Items
                        where !t.Items && t.DeliverySelection
                        orderby t.Delivery.SubmissionDate descending
                        select t;

Ich habe auch versucht:

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

dies gibt jedoch einen Fehler:

Keine Überladung für Methode 'OrderByDescending' akzeptiert 0 Argumente

Nach dem, was ich gelesen habe, bin ich mir ziemlich sicher, dass der erste Weg, den ich gemacht habe, funktionieren sollte. Ich habe versucht, das Absteigen in das Aufsteigen zu ändern, nur um zu sehen, ob es etwas tut, aber es bleibt gleich. 

Ich wäre dankbar, wenn jemand die Anfrage ansehen und sehen könnte, ob ich etwas falsch mache. Vielen Dank :)

387
109221793

Sie müssen eine Eigenschaft zum Sortieren auswählen und als Lambda-Ausdruck an OrderByDescending übergeben.

mögen:

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

Wirklich, obwohl die erste Version Ihrer LINQ-Anweisung funktionieren sollte. Ist t.Delivery.SubmissionDate tatsächlich mit gültigen Daten gefüllt? 

599
Adam Price

Ich denke, das ist zuerst fehlgeschlagen, weil Sie einen Wert bestellen, der null ist. Wenn Lieferung eine mit einem Fremdschlüssel verknüpfte Tabelle ist, sollten Sie diese Tabelle zuerst einschließen.

var itemList = from t in ctn.Items.Include(x=>x.Delivery)
                    where !t.Items && t.DeliverySelection
                    orderby t.Delivery.SubmissionDate descending
                    select t;
153
mrosiak

Ich denke, der zweite sollte sein

var itemList = (from t in ctn.Items
                where !t.Items && t.DeliverySelection
                select t).OrderByDescending(c => c.Delivery.SubmissionDate);
25
Jonathan

Um es in einem anderen Format anzuzeigen, das ich aus irgendeinem Grund vorziehen möchte: Die erste Möglichkeit gibt Ihre itemList als System.Linq.IOrderedQueryable zurück

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

Dieser Ansatz ist in Ordnung, aber wenn Sie es direkt in ein Listenobjekt haben wollten:

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

Alles, was Sie tun müssen, ist, einen .ToList () - Aufruf an das Ende der Abfrage anzufügen.

Etwas zu beachten, ich kann mich nicht mehr daran erinnern, ob der Ausdruck! (Nicht) im Where () - Aufruf zulässig ist. 

0
NullReff