Я предполагаю, что вы не знаете, как соответствующим образом изменить поля Hour
в DataRow, прежде чем вставлять их в базу данных.
Единственное, что вам нужно знать, это новый hour
первогоDataRow, остальные получают 1 час:
var firstHour = 5 + 1 - dtItems.Rows.Count; //where 5 is your MaxCount
for (var i = 0; i < dtItems.Rows.Count; i++) {
if (i == 0)
dtItems.Rows[i]["hours"] = firstHour;
else
dtItems.Rows[i]["hours"] = 1;
}
Чтобы пользователи не могли вставлять более 5 строк, вам нужно только проверить на dtItems.Rows.Count < 5
, прежде чем вставить новую.
Редактировать : Если вам нужно, чтобы его рассчитывали для каждого emp_num
в DataTable
, как прокомментировано:
var q = from r in dtItems.AsEnumerable()
group r by r["emp_num"];
foreach(var empGrp in q){
var rows=empGrp.ToList();
var firstHour = 5 + 1 - rows.Count;
for (var i = 0; i < rows.Count; i++){
if (i == 0)
rows[i]["hours"] = firstHour;
else
rows[i]["hours"] = 1;
}
}