5

LINQ式は次のようになります

var a = ctx.EntitySet
        .OrderByDescending(t => t.Property)
        .Skip(pageIndex * size) 
        .Take(size);

OrderBy()はSkip()とTake()の前に呼び出す必要がありますが、ソートは最後に行われます。この問題を解決できますか?

申し訳ありませんが、多くの人が私の質問を理解していませんでした。クエリはエラーなしで実行されますが、

//It is I want
1) Sorting ALL data
2) Use Skip() and Take()

私の例で気に入った場合の結果は次のとおりです。1)Skip()2)Take()3)取得した要素のみを並べ替えます。

4

3 に答える 3

0

これを試しましたか

以下の解決策を選択すると、最初にレコードが取得され、そのレコードで並べ替えが行われるため、間違った結果が生じる可能性があります。

var a = ctx.EntitySet
        .Skip(pageIndex * size) 
        .Take(size);

a = a.OrderByDescending(t => t.Property);

また

最初に並べ替えを行い、その後レコードを取得する方法に従って、この方法で目的の結果を取得できます。これが適切な方法です

   var a = ctx.EntitySet
    .OrderByDescending(t => t.Property)
    .Skip(pageIndex * size) 
    .Take(size);

しかし、それは常にあなたの要件に依存します....

于 2011-09-19T07:49:45.087 に答える
0

このサンプルのコマンド オーダーは重要ではありません。最初にデータが並べ替えられ、その後にデータが収集されます。

于 2013-06-16T10:59:25.277 に答える