我有一个LINQ查询,它通过动态属性过滤和排序记录列表(来自数据库),并根据当前分页设置跳过/获取适当数量的记录。
一切正常。现在我想对记录进行分组(再次通过动态密钥),并且能够逐个扩展组(在用户选择上)。另外,我需要这个与分页一起工作。
例如,我有一个说100个记录new { Name = ..., Category = ..., Prop1 = ..., Prop2 = ..., }
的列表,这些记录已经过滤和排序(来自任何记录的总集)。假设我们有10个不同的类别(范围从1到10),当前的分页设置为从0开始的10个项目。
现在我希望这些记录按其Category
分组,然后说明Category == 5
(与此3匹配的项目)和Category == 8
(与此10匹配的项目)展开的群组,其余的已折叠
应该返回什么
Group {Category == 1)
Group {Category == 2)
Group {Category == 3)
Group {Category == 4)
Group {Category == 5)
{
{ Name, Category, Prop1, Prop2, ... }
{ Name, Category, Prop1, Prop2, ... }
{ Name, Category, Prop1, Prop2, ... }
}
Group {Category == 6)
Group {Category == 7)
Group {Category == 8)
{
{ Name, Category, Prop1, Prop2, ... }
}
因此返回的条目数量为'折叠类别每个计数为1个条目,并且它们所持有的项目的扩展类别计数。最后一个扩展类别被削减了'因为这些项目将超过所请求的总条目数量(10)。
理想情况下,这一切都基于IQueryable
,因此只会从数据库中提取所请求的项目。
我确实调查了GroupBy
和GroupJoin
,但我不确定如何按请求的记录数限制这些分组中的项目。