2011-03-17 111 views
329

我相信这将是一个相对简单的问题。LINQ Orderby降序查询

我有一个LINQ查询,我想按最近创​​建的日期排序。

参见:

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

我也曾尝试:

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

但是这给出了一个错误:

没有重载方法 'OrderByDescending' 取0参数

从我读过的内容来看,我确信我做过的第一种方法应该可行。我试着改变下降到只是为了看看它做了什么,但它保持不变。

如果有人能看看查询,看看我是否做错了,我将不胜感激。谢谢:)

回答

511

你需要选择一个属性来排序,并把它作为一个lambda表达式OrderByDescending

,如:

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

真的,虽然你的LINQ的第一个版本声明应该工作。 t.Delivery.SubmissionDate实际上是否填充有效日期?

+0

嗨optus,谢谢你的答复。我已经找出问题所在。我使用的是一个paginatedList,它实际上是从该辅助类中进行排序。一旦时间限制到达,我会将您的答案标记为正确:) – 109221793 2011-03-17 20:40:46

23

我觉得第二个应该是

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

双下降? – Snowbear 2011-03-17 20:31:47

+0

我认为对他是公平的,我在发布时输入了错误的查询(即,在第二个最后的命令行中),他可能只是复制并粘贴来演示使用Lambda OrderByDescending。 – 109221793 2011-03-17 20:49:43

+0

对不起。我是一个复制/粘贴错误。我会编辑它。 – Jonathan 2011-03-17 21:33:21

122

我想这首先失败,因为你点值是零。如果交付是一个外键关联表,那么你应该首先包括这个表,例如:

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

+1。我讨厌那些没有理由而沮丧的人。 – jp2code 2014-07-01 18:30:16

+0

包括相当于 DataLoadOptions dlo = new DataLoadOptions(); dlo.LoadWith (i => i.Delivery); ctn.LoadOptions = dlo; – mrosiak 2015-02-17 16:52:32