2011-12-26 13 views
4

ユーザーにshortURLのリストを表示する小さなアプリケーションがあります。私は、ASP.NET MVC3、Entity Framework、およびOracleバックエンドを使用しています。私はまた、Troy Goode(https://github.com/TroyGoode/PagedList)のPagedListライブラリを使用しています。toPagedList()の順序はLINQ order by句と異なります

ブログのコメントの順序と同様に、最初に最後のエントリを表示します。これを行うには、私はLINQのステートメントに句を「降順ORDERBY」を追加しました:「リンク」オブジェクトをデバッグするには

var links = from l in db.LINKS 
      orderby l.ID descending 
      select l; 

を期待通りに(主キーの「ID」で、降順に)命じています。

今私は.toPagedList()メソッドを使用してビューへのリンクのリストを渡したい:

int pageSize = 3; 
int pageNumber = (page ?? 1); // "page" comes from the request, if null set to 1 
return View(links.ToPagedList(pageNumber, pageSize)); 

私は唯一の3つのレコードを持っている場合、これは素晴らしい作品(上記「pageSizeを」を参照してください)。しかし、4番目のレコードを追加すると予期しない動作が発生します。私はpageSizeを3に設定しているので、4番目のレコードを追加すると2ページがあることを意味します。次のように私は順序があることを期待する:

Page 1: 
    ID: 4 
    ID: 3 
    ID: 2 
Page 2: 
    ID: 1 

をケースではないことを、どのような実際に起こることはこれです:

Page 1: 
    ID: 3 
    ID: 2 
    ID: 1 
Page 2: 
    ID: 4 

だから私の質問、私は一体何をやっていますここで間違っている? PagedListがLINQステートメントの "orderby l.ID descending"式で定義された順序に従わないのはなぜですか?デバッガで.toPagedLIst()が使用される前に、 "リンク"オブジェクトが適切に順序付けされていることは明らかです。

すべてのヘルプは大歓迎です!

+0

Linq-to-Oracleを使用していますか? –

+0

@GertArnold私はlinq-to-entityを使用しています。私はEF4.2プロバイダを使用しています。私はこのようなものに新鮮であることを認めなければならないので、私はこの2つの違いを完全には分かっていません。私の考えは、Oracle ADOとEFの間で、LINQはOracleの上で動作すると考えられます。 –

+1

あなたはこのソリューションを見つけたことがありますか?私はSQLデータベースのバックエンドを使って同じ問題を抱えています。 –

答えて

0

あなたは試みることができる:

return View(links.ToPagedList(pageNumber, pageSize, m => m.ID, true)); 

をそれは私の頭の上からなので、それは完璧に動作しない場合はごめんなさい...

- うわー、ちょうど日付を気づきましたこれで...私は日付でソートせずに、未回答のページをトロールするのを止める必要があります!

関連する問題