在子集合上应用分页
Applying pagination on subcollection
如何对子集合应用分页?下面是结构。
要求是当我将页面限制设置为 10 时,
如果SampleDataSet中的details超过10条记录,那么只需要显示前10条记录。所以当我像下面这样应用分页时
listSampleDataSet = listSampleDataSet .Skip(pageIndex).Take(pageSize);
它将 return 10 个 SampleDataSet 如何应用分页以便它 return 只有一个 SampleDataSet 因为其中的 Details 集合有超过 10 条记录。
示例:
public class SampleDataSet
{
int id {get;set;}
int name {get;set;}
List<DetailsDataSet> Details {get;set;}
}
List<SampleDataSet> listSampleDataSet = new List<SampleDataSet>();
listSampleDataSet = listSampleDataSet .Skip(pageIndex).Take(pageSize);
它将 return 10 个 SampleDataSet,这是正确的,因为分页应用于主集合。如何应用分页以便它 return 只有一个 SampleDataSet 因为其中的 Details 集合有超过 10 条记录?
int pageSize = 10;
int pageNum = 1;
listSampleDataSet.Skip(pageSize * pageNum).Take(pageSize);
如果您有权访问 DetailsDataSet
的根集合,您可以:
- 使用连接而不是导航属性
- 更改获取数据的方向:意味着您应该将
DetailsDataSet
作为主要集合,通过父 ID 过滤(以防您显示特定的 SampleDataSet
对象)并应用分页。
否则将分页功能移动到 SampleDataSet
创建一个 function/property 它将为您提供下一页(以及上一页)的详细信息,并将状态存储在对象本身中
public class SampleDataSet
{
public int id { get; set; }
public int name { get; set; }
public List<DetailsDataSet> Details { get; set; }
private int page = 0;
private int pageSize = 10;
public bool HasNextPage() => Details.Count > pageSize * (page + 1);
public IEnumerable<DetailsDataSet> GetNextPage() => Details.Skip(pageSize * page++).Take(pageSize);
// etc...
}
如何对子集合应用分页?下面是结构。 要求是当我将页面限制设置为 10 时, 如果SampleDataSet中的details超过10条记录,那么只需要显示前10条记录。所以当我像下面这样应用分页时
listSampleDataSet = listSampleDataSet .Skip(pageIndex).Take(pageSize);
它将 return 10 个 SampleDataSet 如何应用分页以便它 return 只有一个 SampleDataSet 因为其中的 Details 集合有超过 10 条记录。
示例:
public class SampleDataSet
{
int id {get;set;}
int name {get;set;}
List<DetailsDataSet> Details {get;set;}
}
List<SampleDataSet> listSampleDataSet = new List<SampleDataSet>();
listSampleDataSet = listSampleDataSet .Skip(pageIndex).Take(pageSize);
它将 return 10 个 SampleDataSet,这是正确的,因为分页应用于主集合。如何应用分页以便它 return 只有一个 SampleDataSet 因为其中的 Details 集合有超过 10 条记录?
int pageSize = 10;
int pageNum = 1;
listSampleDataSet.Skip(pageSize * pageNum).Take(pageSize);
如果您有权访问 DetailsDataSet
的根集合,您可以:
- 使用连接而不是导航属性
- 更改获取数据的方向:意味着您应该将
DetailsDataSet
作为主要集合,通过父 ID 过滤(以防您显示特定的SampleDataSet
对象)并应用分页。
否则将分页功能移动到 SampleDataSet
创建一个 function/property 它将为您提供下一页(以及上一页)的详细信息,并将状态存储在对象本身中
public class SampleDataSet
{
public int id { get; set; }
public int name { get; set; }
public List<DetailsDataSet> Details { get; set; }
private int page = 0;
private int pageSize = 10;
public bool HasNextPage() => Details.Count > pageSize * (page + 1);
public IEnumerable<DetailsDataSet> GetNextPage() => Details.Skip(pageSize * page++).Take(pageSize);
// etc...
}