LINQ Orderby Descending クエリ

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

最近作成された日付で並び替えたい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個の引数を取ります。

読んだ限りでは、私が最初に行った方法でうまくいくはずです。試しにdescendingをascendingに変更してみましたが、何も変わらずです。

誰かがこのクエリを見て、私が何か間違ったことをしていないかどうかを確認してくれるとありがたいのですが。ありがとうございます。)

ソリューション

ソートするPropertyを選び、それをラムダ式でOrderByDescending`に渡す必要があります。

のようにします。

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

本当に、最初のバージョンのLINQ文は動作するはずですが。 t.Delivery.SubmissionDate`には実際に有効な日付が入力されていますか?

解説 (1)

この最初の失敗は、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;
解説 (1)

2つ目は、次のようにします。

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