web-dev-qa-db-ja.com

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引数を取りません

私が読んだものから、私が行った最初の方法がうまくいくはずだと確信しています。私はそれが何かをするかどうかを確かめるためだけに降順を昇順に変更しようとしましたが、それは同じままです。

誰かが質問を見て、私が何か悪いことをしているのかどうかを確認できれば幸いです。ありがとう:)

394
109221793

ソートするプロパティを選択し、それをラムダ式として OrderByDescending に渡す必要があります。

好きです:

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

実際、LINQステートメントの最初のバージョンでうまくいくはずです。 t.Delivery.SubmissionDateには実際に有効な日付が入力されていますか?

617
Adam Price

あなたは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;
156
mrosiak

私は2番目のものがあるべきだと思います

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

私が何らかの理由で私が使うのを好む別のフォーマットでそれを示すために:最初の方法はSystem.Linq.IOrderedQueryableとしてあなたのitemListを返します

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)式を使用できるかどうかを思い出せません。

1
NullReff