2008-08-21 11 views
15

私はSystem.Generic.Collections.List(Of MyCustomClass)タイプのオブジェクトを持っています。Linqを汎用コレクションのページングに使用するにはどうすればよいですか?

整数の可読性ページサイズとページ番号を指定すると、どのようにしてMyCustomClassオブジェクトの任意の1ページだけをクエリできますか?

+0

私はあなたがこれを行うためにTake and Skip機能を持っていると信じています。 –

答えて

29

表示したいすべての行が含まれているあなたのLINQクエリを使用している場合は、このコードを使用することができます。

var pageNum = 3; 
var pageSize = 20; 
query = query.Skip((pageNum - 1) * pageSize).Take(pageSize); 

あなたは、オブジェクトの拡張メソッドが

を書くことができるようにすることができます
query.Page(2,50) 

ことがある場合は2ページの最初の50件のレコードを取得するためにあなたがしたいしたい、情報がsolid code blog.

5

上でこんにちは、私PagedListと呼ばれる邪悪な事がありますRob Coneryスクリーンキャストを見たときに得ました。

http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/

それはすべてスキップを持っており、内蔵のものを取る。

あなたが行うすべては..私は今それを呼び出し

var query = from item in DB.Table 
where item.Field == 1 
orderby item.Field2 
select item; 

PagedList<MyType> pagedList = query.ToPagedList(pageIndex, pageSize); 

それが役に立てば幸いを使用していて、それが動作しますlinqからエンティティへはOKです。エンティティにLinqを使用すると、Skip and Takeを使用する前にOrderbyを実行する必要があります。

関連する問題