2013-12-16 91 views
1

我已經絞盡腦汁在這一個,它比它看起來更難。令人費解的令人費解:Sudo代碼(或C#,linq)的分頁算法,如谷歌

請可能一些鐵桿黑客在那裏給我一個很好的方式來實現以下:

鑑於大小未知和已知的最大範圍大小的索引列表[說 10](頁面尺寸,即將返回多少結果)當我給
這個函數一個索引(在索引列表的範圍內)然後它會返回一個新的範圍然後返回的範圍的大小應該是
10,如果可能的話返回的範圍應該總是嘗試包括
之前的5個索引輸入指數和返回範圍內應儘量 包括輸入指數

後4項指標要查看這方面的工作,轉到谷歌和搜索的東西。您將得到一組包含一些鏈接的結果(1 - 10) 當您在第6頁之後單擊任何鏈接時,結果將始終有5個鏈接在當前頁面之後,並且有4個鏈接。

我只想看看這是如何完成的,邏輯上。

如果有人有一個很酷的linq建議,那麼我會很感激。

我已經使這個代碼工作,但它是冗長的,有很多'ifs'和'elses' - 我只知道有一個很好的方法來做到這一點。我發現

存在的問題,其中:

(1)具有一定範圍的使用小於所述偏移量(即,僅三個結果)。

(2)輸入非常接近輸入範圍的開始或結束的索引。

我一遍又一遍地搜索網絡,但找不到一個簡單的(語言不可知的)方式來表達這種邏輯。

感謝,

+0

http://stackoverflow.com/questions/163809/smart-pagination-algorithm 各種語言。 – Electrawn

+0

嗨選舉。這看起來像我所需要的。謝謝:) – user2960017

+0

任何人都碰巧有任何漂亮的LINQ解決方案? - 謝謝 – user2960017

回答

1

您可以使用一個max功能(與語言無關的)來實現這一目標。

start_index = max(1, index - offset) 
end_index = index + offset 
+0

嗨,謝謝你的回答。我試過了,但如果我們只有三個結果呢? - end_index將大於整個範圍。我確實說這是騙人的.. – user2960017

+0

你說這個清單是未知的大小。如果你知道尺寸,你可以放在列表中。如果它是一個未知的大小列表,保證你沒有超出界限當然是不可能的。 – recursive