LINQ Orderby降順クエリ


439

これは比較的簡単なものになると思います。

最近作成した日付で並べ替えたい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'のオーバーロードは引数を取らない

私が読んだことから、私がそれを実行した最初の方法が機能するはずだとかなり確信しています。降順を昇順に変更して、何もするかどうかを確認しましたが、同じままです。

誰かがクエリを見て、私が何か間違ったことをしていないかどうかを見ていただければ幸いです。ありがとう:)

回答:


674

並べ替えるプロパティを選択し、ラムダ式として渡す必要があります OrderByDescending

お気に入り:

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

本当に、ただし、LINQステートメントの最初のバージョンは機能するはずです。されt.Delivery.SubmissionDate、実際に有効な日付が移入?


2
こんにちはoptus、返信ありがとうございます。私は問題が何であるかを理解しました。私はpaginatedListを使用していましたが、実際にはそのヘルパークラスからの順序付けを行っていました。制限時間が
切れ

175

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;

includeはDataLoadOptionsと同等です。dlo = new DataLoadOptions(); dlo.LoadWith <Items>(i => i.Delivery); ctn.LoadOptions = dlo;
mrosiak 2015

29

2つ目は

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

私は彼に公平だと思います、私が投稿したときにクエリを間違って入力しました(つまり、最後のorderby行の2番目の行に移動しました)。
109221793

6

何らかの理由で使用したい別の形式でそれを表示するだけです。最初の方法は、itemListをSystem.Linq.IOrderedQueryableとして返します。

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

そのアプローチは問題ありませんが、リストオブジェクトに直接入れたい場合は、次のようにします。

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

必要なのは、クエリの最後に.ToList()呼び出しを追加することだけです。

覚えておきたいのは、Where()呼び出しで!(not)式が受け入れ可能かどうか、頭の上では思い出せないことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.