0

8つのアイテムのリストがあります。

リストから5つのアイテムをそれぞれ取得する必要があります

私が試したコード:

lstRules.ToList()
    .GetRange(((currentPage - 1) * pageSize + 1) - 1, (currentPage * pageSize));

IFCurrentPage = 1 and Pagesize = 5の場合、ここでは (0,5) の範囲を渡すため、aove コードは正しく機能します...

その場合CurrentPage = 2 and PageSize = 5 、以下のようなエラーがスローされます。

「オフセットと長さが配列の範囲外であるか、カウントがインデックスからソース コレクションの末尾までの要素数を超えています」

3リストにアイテムしかなく、範囲を渡すため、このエラーが発生することはわかっています(5,5)...だから、このエラーが発生しました..

ここでの私の質問は、この問題を解決する方法ですか?

リストからデータを取得する他の方法はありますか?

4

4 に答える 4

6

次のようなことができます:

current がpageNumberあり、定義するページあたりのレコード数がわかっている場合: recordsPerPage、汎用クエリは次のようになります

var currentPageData = lstRules.ToList().
                          Skip(pageNumber * recordsPerPage).Take(recordsPerPage);
于 2013-07-03T09:05:52.843 に答える
2

代わりに LINQ を使用します。

var data = lstRules.Skip(pageNumber * pageSize).Take(pageSize);

または、 PagedListなど、既に作業を行っているライブラリを使用することもできます。

于 2013-07-03T09:05:42.750 に答える
0

使用できますTake

lstRules.Take(5);
于 2013-07-03T09:05:42.340 に答える