我有一个物品清单List<Parent> Parents
。
该Parent
班有一个List<Child> Children
。
到目前为止,我已经将分页应用于Parents
LINQ:
List<Parent> PageX = Parents.Skip(PageIndex * PageSize).Take(PageSize);
例如,如果PageSize = 2,我得到以下结果:
---------------第1页----------------------
父母1
儿童1
儿童2
儿童3
父母2
儿童1
儿童2
- - - - - - - - 第2页 - - - - - - - - - - -
父母3
儿童1
父母4
儿童1
儿童2
我要实现以下目标:
---------------第1页----------------------
父母1
儿童1
儿童2
- - - - - - - - 第2页 - - - - - - - - - - -
儿童3
父母2
儿童1
---------------第3页----------------------
儿童2
父母3
儿童1
我该如何实现?
您可以使用SelectMany
:
var page = parents.SelectMany(p => p.Children)
.Skip(PageIndex * PageSize).Take(PageSize);
更新:
我做了一些研究,因为这也引起了我的兴趣。使用以下假设:
Position
财产您应该能够对数据库执行以下操作,以“在一个查询中”以正确的顺序获取页面的项目:
var pageItems = db.Parents.SelectMany(p => p.Children).Include(c => c.Parent)
.OrderBy(c => c.Parent.Position).ThenBy(c => c.Position)
.Skip(PageIndex * PageSize).Take(PageSize);
我没有测试此代码,因为目前我没有数据库可以测试,因此如果假设适合您的情况,请报告。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句