LINQ Orderby降序查询

109*_*793 420 c# linq sql-order-by

我相信这将是一个相对简单的.

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

看到:

        var itemList = from t in ctn.Items
                        where !t.Items && t.DeliverySelection
                        orderby t.Delivery.SubmissionDate descending
                        select t;
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

       var itemList = (from t in ctn.Items
                        where !t.Items && t.DeliverySelection
                        select t).OrderByDescending();
Run Code Online (Sandbox Code Playgroud)

但这会给出一个错误:

方法'OrderByDescending'的重载不带0参数

从我所读到的,我很确定我做的第一种方式应该有效.我已经尝试将降序改为升序只是为了看它是否做了什么,但它保持不变.

如果有人能够查看查询并查看我是否做错了什么,我将不胜感激.谢谢 :)

Ada*_*ice 649

您需要选择要排序的属性并将其作为lambda表达式传递给 OrderByDescending

喜欢:

.OrderByDescending(x => x.Delivery.SubmissionDate);
Run Code Online (Sandbox Code Playgroud)

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

  • 嗨,Optus,谢谢您的答复。我已经弄清楚了问题所在。我使用的是paginatedList,它实际上是根据该帮助器类进行排序的。时间到了,我会标记您的答案正确:) (2认同)

mro*_*iak 166

我认为这首先失败了,因为你订的是null的值.如果Delivery是外键关联表,那么您应首先包含此表,如下所示:

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


Jon*_*han 28

我认为第二个应该是

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


nul*_*ron 8

只是为了以某种我更喜欢使用的不同格式来显示它:第一种方法将您的 itemList 作为 System.Linq.IOrderedQueryable 返回

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

这种方法很好,但如果您想直接将其放入列表对象中:

var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
                                .OrderByDescending(x => x.Delivery.SubmissionDate).ToList();
Run Code Online (Sandbox Code Playgroud)

您所要做的就是在查询的末尾附加一个 .ToList() 调用。

需要注意的一点是,我想不起来在 Where() 调用中是否可以接受 !(not) 表达式。