using System.Collections.Generic;
public static void Main(string[] args)
Console.WriteLine ("Try programiz.pro");
var data = new List<GroupByUnitCodeDto>
new GroupByUnitCodeDto { UnitCode = "A", RowCount = 5 },
new GroupByUnitCodeDto { UnitCode = "B", RowCount = 10 },
new GroupByUnitCodeDto { UnitCode = "C", RowCount = 15 },
new GroupByUnitCodeDto { UnitCode = "D", RowCount = 20 },
new GroupByUnitCodeDto { UnitCode = "E", RowCount = 25 },
new GroupByUnitCodeDto { UnitCode = "F", RowCount = 30 },
new GroupByUnitCodeDto { UnitCode = "G", RowCount = 35 },
new GroupByUnitCodeDto { UnitCode = "H", RowCount = 40 },
new GroupByUnitCodeDto { UnitCode = "I", RowCount = 45 },
new GroupByUnitCodeDto { UnitCode = "J", RowCount = 50 },
new GroupByUnitCodeDto { UnitCode = "K", RowCount = 55 },
new GroupByUnitCodeDto { UnitCode = "L", RowCount = 60 },
new GroupByUnitCodeDto { UnitCode = "M", RowCount = 65 },
new GroupByUnitCodeDto { UnitCode = "N", RowCount = 70 },
new GroupByUnitCodeDto { UnitCode = "O", RowCount = 75 },
new GroupByUnitCodeDto { UnitCode = "P", RowCount = 80 },
new GroupByUnitCodeDto { UnitCode = "Q", RowCount = 85 },
new GroupByUnitCodeDto { UnitCode = "R", RowCount = 90 },
new GroupByUnitCodeDto { UnitCode = "S", RowCount = 95 },
new GroupByUnitCodeDto { UnitCode = "T", RowCount = 100 },
new GroupByUnitCodeDto { UnitCode = "U", RowCount = 105 },
new GroupByUnitCodeDto { UnitCode = "V", RowCount = 110 },
new GroupByUnitCodeDto { UnitCode = "W", RowCount = 115 },
new GroupByUnitCodeDto { UnitCode = "X", RowCount = 120 },
new GroupByUnitCodeDto { UnitCode = "Y", RowCount = 125 },
new GroupByUnitCodeDto { UnitCode = "Z", RowCount = 130 },
var datas = SplitUnitRangeForJasper(data, 100, 8);
string jsonString = JsonSerializer.Serialize(datas);
foreach (var dd in datas)
Console.WriteLine ("Try programiz.pro {0} to {1}",dd.UnitCodeStart,dd.UnitCodeEnd);
public class GroupByUnitCodeDto
public string UnitCode { get; set; } = "";
public int RowCount { get; set; }
public class UnitCodeRangeDto
public string UnitCodeStart { get; set; } = "";
public string UnitCodeEnd { get; set; } = "";
public static List<UnitCodeRangeDto> SplitUnitRangeForJasper(List<GroupByUnitCodeDto> groupUnits, int pageLimit = 1000, int rowPerPage = 8)
List<UnitCodeRangeDto> result = new List<UnitCodeRangeDto>();
int totalRowPerFile = pageLimit * rowPerPage;
string unitCodeStart = "";
foreach (var groupUnit in groupUnits)
unitCodeStart = groupUnit.UnitCode;
currentSum += groupUnit.RowCount;
if (currentSum > totalRowPerFile)
unitCodeEnd = groupUnit.UnitCode;
result.Add(new UnitCodeRangeDto {
UnitCodeStart = unitCodeStart,
UnitCodeEnd = unitCodeEnd
result.Add(new UnitCodeRangeDto {
UnitCodeStart = unitCodeStart,
UnitCodeEnd = groupUnits[^1].UnitCode