2009-03-19 2 views
0

私は、指定された条件と所定のページング(開始インデックスと必要なアイテムの数)を持つデータベースからアイテムを取得するための遅延リストを作成しています。フェッチするアイテムの数を決定する

リストのインスタンス化では、マップされたテーブルのアイテムの総数がカウントされるので、リストの最初のサイズ(リストはアイテムの追加と削除が許可されているため、の最初の)を持ちます。

それはほとんど動作しますが、フェッチする項目の具体的な数を決定する際に、私はいくつかのトラブルを抱えている:実際には、私は、ユーザーが指定したサイズフェッチを指定してみましょう(のは、この例では、をしましょう) 。フェッチするアイテムの正確な数を決定する

は、現時点で、私は、コレクション(データベーステーブルから検索最後)の項目の現在のインデックスにサイズ因子をフェッチ追加します。結果が総カウントよりも小さいか等しい場合、私は何もしません(そしてフェッチは透明です)。しかし、合計が大きければ、フェッチする残りのアイテムの計算に失敗します。

実際には、残りのアイテム数を計算するために、コレクション内のアイテムの合計数から、 + 1(インデックスは0から始まります)のすべての条件では機能しません。

適切な要因を計算する方法を知りましたか?あなたに多くの人々ありがとう!約

items_to_fetch = min(current_index + fetch_size, total_count) 
+0

私が現時点で実装している解決策は、唯一の問題は「current_index」が0、「total_count」が1であることです。これはitems_to_fatchの0になります。変数... – Antonello

答えて

0

は答えてくれてありがとう、私はそれほど明白でもそれほど単純ではありませんでした解決策、見つかった:

index -> destination index (within the collection) 
diff_to_index -> index - current_index 
items_to_fetch -> (current_index + 1) + items_to_fetch >= total_count ? total_count - (current_index + 1) : max(diff_to_index, fetch_size) 

乾杯を! :)

0

items_to_fetch = max(0, min(fetch_size, total_count - current_index + 1)) 

はまた、あなたは、実行時の現在の合計数ではなく、いくつかのキャッシュされた値を取得することを確認してください。

0

方法::私はあなたのような何かをしなければならないと考えている

関連する問題