Skip to content

Instantly share code, notes, and snippets.

@dandohotaru
Created January 29, 2018 22:03
Show Gist options
  • Save dandohotaru/1d9c20091653b88c8ee14a1da6fef517 to your computer and use it in GitHub Desktop.
Save dandohotaru/1d9c20091653b88c8ee14a1da6fef517 to your computer and use it in GitHub Desktop.
void Main()
{
var data = new[]
{
new Asset{Id=1, Name="one"},
new Asset{Id=2, Name="two"},
new Asset{Id=3, Name="three"},
new Asset{Id=4, Name="four"},
new Asset{Id=5, Name="five"},
new Asset{Id=6, Name="six"},
new Asset{Id=7, Name="seven"},
new Asset{Id=8, Name="eight"},
new Asset{Id=9, Name="nine"},
new Asset{Id=10, Name="ten"},
new Asset{Id=11, Name="eleven"},
new Asset{Id=12, Name="twelve"},
};
var paged = data.Page(page: 2, size: 5);
paged.Dump();
var indexed = paged.Items
.Select((current, index) =>
{
var skipped = (paged.Page - 1) * paged.Size;
return new
{
Index = skipped + index,
Item = current,
};
});
indexed.Dump();
}
public static class Extensions
{
public static Paged<T> Page<T>(this IEnumerable<T> instance, int? page = 1, int? size = 10)
{
var items = instance
.Skip((page.Value - 1) * size.Value)
.Take(size.Value)
.ToList();
return new Paged<T>()
{
Page = page.Value,
Size = size.Value,
Total = instance.Count() - 1,
Items = items,
};
}
}
public class Paged<T>
{
public IEnumerable<T> Items { get; set; }
public int Page { get; set; }
public int Size { get; set; }
public int Total { get; set; }
}
public class Asset
{
public int Id { get; set; }
public string Name { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment