LINQ Orderby Descending Query

Я уверен, что это будет относительно просто.

У меня есть запрос 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 аргументов

Из того, что я прочитал, я уверен, что первый способ, которым я это сделал, должен работать. Я попытался изменить спуск на восхождение только для того, чтобы убедиться, что он что-то делает, но он остается прежним.

Я был бы признателен, если бы кто-нибудь мог взглянуть на запрос и посмотреть, не делаю ли я что-то неправильно. Спасибо:)

Ответ 1

Вам нужно выбрать свойство для сортировки и передать его как выражение лямбда OrderByDescending

как:

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

Действительно, хотя первая версия вашего оператора LINQ должна работать. Действительно ли t.Delivery.SubmissionDate заполнены действительными датами?

Ответ 2

Я думаю, что это первое не удалось, потому что вы заказываете значение, которое равно 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;

Ответ 3

Я думаю, что второй должен быть

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