gpt4 book ai didi

c# - 复杂的 LINQ 分页算法

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:25 26 4
gpt4 key购买 nike

我们有一个项目列表,这些项目可能有也可能没有子项目的集合。我们的报告需要包含除子项目的父项目之外的所有项目。

我需要将其分页,例如 25 行。但是,如果子项目出现在该页面上,则该项目的所有子项目都必须出现在同一页面上。因此,如果需要,可能会出现超过 25 个项目。

我已经做到了

var pagedProjects = db.Projects.Where(x => !x.SubProjects.Any()).Skip(
(pageNo -1) * pageSize).Take(pageSize);

显然,这不符合要求的第二部分。

更麻烦的是,我需要对报告进行寻呼机控制。所以我需要能够计算总页数。

我可以遍历整个项目表,但性能会受到影响。任何人都可以提出分页解决方案吗?

编辑 - 我可能应该提到子项目通过自引用外键重新连接到项目上,所以所有的项目,父项目,子项目等等,都以 IQueryable<Project> 的形式返回。 .

最佳答案

也许尝试对父项目进行分页,但只显示其子项目。

var pagedParentProjects = db.Projects.Where(x => x.SubProjects.Any()).Skip(pageNo-1) * pageSize).Take(pageSize);

然后在显示数据时循环遍历该项目的子项目。

@model IEnumerable<Project>

@foreach (Project project in Model)
{
<div>
@foreach (Project subProject in project.SubProjects)
{
<span>subProject.Name</span>
}
</div>
}

现在所有具有相同父项目的子项目都将在同一页面上。

关于c# - 复杂的 LINQ 分页算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com