Я зацикливаю таблицу данных, имеющую 118 строк данных, разбивая их на два столбца. Я хотел бы, чтобы данные в списке [0] были row1 и row41. Работает ли он нормально, пока не дойдет до строки 81, и он не прекратит использовать ColumnTwo, потому что dataTable.Rows.Count равен 118, а i + ROWS_PER_PAGE равен 120, поэтому он не пойдет в построение ColumnTwo.
Есть ли что-точто мне не хватает в моей логике? поэтому он заполнит ColumnTwo?
public List<DataForExcelExport> Fill(DataTable dataTable)
{
var list = new List<DataForExcelExport>();
const int ROWS_PER_PAGE = 40;
for (int i = 0; i < dataTable.Rows.Count; i++)
{
DataRow dr = dataTable.Rows[i];
var item = new DataForExcelExport();
SetItemData(dr, item, true);
if (i + ROWS_PER_PAGE < dataTable.Rows.Count)
//if (i < dataTable.Rows.Count)
{
SetItemData(dataTable.Rows[i + ROWS_PER_PAGE], item, false);
}
//New Logic
else
{
int x = (dataTable.Rows.Count - i)/2;
ROWS_PER_PAGE = x;
SetItemData(dataTable.Rows[i + ROWS_PER_PAGE], item, false);
}
list.Add(item);
if ((i + 1) % ROWS_PER_PAGE == 0)
{
i += ROWS_PER_PAGE;
}
}
return list;
}
static void SetItemData(DataRow row, DataForExcelExport item, bool itIsAFirstColumnItem)
{
if (itIsAFirstColumnItem)
{
item.ColumnOneRowId = row.Field<Int64>("rowid");
item.ColumnOneFirstName = row.Field<string>("FirstName");
item.ColumnOneLastName = row.Field<string>("LastName");
item.ColumnOneOfficePhoneNumber = row.Field<string>("OfficePhoneNumber");
item.ColumnOneExtension = row.Field<string>("Extension");
}
else
{
item.ColumnTwoRowId = row.Field<Int64>("rowid");
item.ColumnTwoFirstName = row.Field<string>("FirstName");
item.ColumnTwoLastName = row.Field<string>("LastName");
item.ColumnTwoOfficePhoneNumber = row.Field<string>("OfficePhoneNumber");
item.ColumnTwoExtension = row.Field<string>("Extension");
}
}
public class DataForExcelExport
{
public Int64 ColumnOneRowId { get; set; }
public string ColumnOneFirstName { get; set; }
public string ColumnOneLastName { get; set; }
public string ColumnOneOfficePhoneNumber { get; set; }
public string ColumnOneExtension { get; set; }
public Int64 ColumnTwoRowId { get; set; }
public string ColumnTwoFirstName { get; set; }
public string ColumnTwoLastName { get; set; }
public string ColumnTwoOfficePhoneNumber { get; set; }
public string ColumnTwoExtension { get; set; }
}
ожидаемый результат:
- page 1
_________
1 | 41
... |...
38 | 78
39 | 79
40 | 80
_________
- page 2
_________
81 | 99
82 | 100
... | ...
98 |118
_________
![Using new logic](https://i.stack.imgur.com/sxwgN.png)