Query LINQ Orderby Descending

Sono sicuro che questo sarà relativamente semplice.

Ho una query LINQ che voglio ordinare per la data di creazione più recente.

Vedi:

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

Ho anche provato:

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

ma questo dà un errore:

Nessun sovraccarico per il metodo 'OrderByDescending' richiede 0 argomenti

Da quello che ho letto, sono abbastanza sicuro che il primo modo in cui l'ho fatto dovrebbe funzionare. Ho provato a cambiare descending in ascending solo per vedere se fa qualcosa, ma rimane lo stesso.

Sarei grato se qualcuno potesse dare un'occhiata alla query e vedere se sto facendo qualcosa di sbagliato. Grazie :)

Soluzione

Dovete scegliere una proprietà da ordinare e passarla come espressione lambda a OrderByDescending

, come:

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

Davvero, anche se la prima versione della tua dichiarazione LINQ dovrebbe funzionare. La t.Delivery.SubmissionDate è effettivamente popolata con date valide?

Commentari (1)

Penso che questo primo non sia riuscito perché stai ordinando un valore che è nullo. Se Delivery è una tabella associata a una chiave esterna, allora dovresti includere questa tabella per prima, esempio qui sotto:

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

Penso che il secondo dovrebbe essere

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