c# - 自定义分页问题

标签 c# algorithm

<分区>

我正在创建一个自定义分页解决方案,但我正在努力想出一个算法来解决这个问题。

我需要创建一个索引位置,例如1 2 3 4 5(其中 1 代表所选索引)。当您考虑到我需要应用上限时,这显然变得更加复杂,例如,如果有 10 页并且当前选择的索引为 8,我希望包含 6 7 8 9 10. 如果我们选择最后一页,则将变为 6 7 8 9 10

有人能为此指出正确的方向吗?我很难确切地知道我什至可以搜索什么来找到答案。

最佳答案

这是我的看法。它与 Kyle's 非常相似除了它使用扩展方法并且当要显示的页面高于页面总数时它不会失败。

public IEnumerable<int> GetDisplayedPages(int currentPage, 
                                          int totalPages, 
                                          int pagesToDisplay)
{
    if (totalPages <= pagesToDisplay) {
        return Enumerable.Range(1, totalPages);

    } else {
        if (pagesToDisplay % 2 == 1) pagesToDisplay -= 1;

        if (currentPage - (pagesToDisplay / 2) <= 0) {
            return Enumerable.Range(1, pagesToDisplay + 1);
        } else if (currentPage + (pagesToDisplay / 2) >= totalPages) {
            return Enumerable.Range(totalPages - pagesToDisplay, pagesToDisplay + 1);
        } else {
            return Enumerable.Range(Convert.ToInt32(currentPage - (pagesToDisplay / 2)), pagesToDisplay + 1);
        }
    }
}

关于c# - 自定义分页问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5720187/

相关文章:

c# - 如何从 asp.net c# 中动态生成的控件中获取值?

c# - 如何使用 dailymotion api 为视频上传设置自定义缩略图

c# - 无法在虚拟目录中使用 MVC2 在 Site.Master 中正确引用 CSS

algorithm - 搜索和排序大数据集

algorithm - 反常的刽子手问题

algorithm - 在棋盘中找到所有可能的方 block ,不包括选定的单元格

python - 给定一个单词列表,识别长度为 4 或更大的所有相同子串

c# - LINQ to Entities 无法识别方法...方法,并且该方法无法转换为存储表达式。

c# - 将方法从 Java 转换为 C#

java - 读取输入并将其存储在数组中的问题