我正在尝试编写一些带有offset值的代码,然后生成第一个/下一个/上一个/最后一个链接。
我目前有类似下面的内容,但一直在考虑边缘情况,我的计算结果出现了偏差。我想有人一定已经在某个地方做过这个,但找不到可以查看/使用的库。
public class PagedItems<T>
{
public PagedItems()
{
}
public PagedItems(int offset, int totalSize, IEnumerable<T> subset)
{
this.Offset = offset;
this.TotalSize = totalSize;
this.Data = subset;
this.Links = new Dictionary<string, Uri>();
var pageCount = (totalSize - offset) / 20;
if (offset > 20)
{
this.Links.Add("prev", new Uri($"/accounts?skip={offset - 20}"));
}
if (offset < (totalSize - offset))
{
this.Links.Add("last", new Uri($"/accounts/skip={totalSize - 20}"));
}
}
public int Offset { get; }
public int Size => this.Data.Count();
public int TotalSize { get; }
public IEnumerable<T> Data { get; }
public Dictionary<string, Uri> Links { get; }
}
明月笑刀无情
相关分类