LINQ Orderby Descending Query

Tenho certeza de que isso será relativamente simples.

Eu tenho uma consulta LINQ que eu quero encomendar pela data criada mais recentemente.

Vejo:

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

Eu também tentei:

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

mas isso dá um erro:

Nenhuma sobrecarga para o método ‘OrderByDescending’ leva 0 argumentos

Pelo que li, tenho quase certeza de que a primeira maneira que fiz isso deveria funcionar. Eu tentei mudar descendente para ascendente apenas para ver se ele faz alguma coisa, mas permanece o mesmo.

Ficaria muito grato se alguém pudesse dar uma olhada na consulta e ver se estou fazendo algo errado. Obrigado 🙂

Você precisa escolher uma propriedade para classificar e passá-la como uma expressão lambda para OrderByDescending

gostar:

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

Realmente, embora a primeira versão da sua instrução LINQ funcione. O t.Delivery.SubmissionDate é realmente preenchido com datas válidas?

Eu acho que isso primeiro falhou porque você está pedindo valor que é nulo. Se a entrega for uma tabela associada à chave estrangeira, você deverá include essa tabela primeiro, por exemplo:

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

Eu acho que o segundo deveria ser

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

Apenas para mostrá-lo em um formato diferente que eu prefiro usar por algum motivo: A primeira maneira retorna seu itemList como um System.Linq.IOrderedQueryable

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

Essa abordagem é boa, mas se você quiser diretamente em um object List:

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

Tudo o que você precisa fazer é append uma chamada .ToList () ao final da consulta.

Algo a se notar, no topo da minha cabeça, não consigo me lembrar se a expressão (não) é aceitável na chamada Where ().