C# 如何根据某些条件更改datatable中的特定列数据
我有以下情况: 我通过一个按钮根据用户数据输入,逐行添加到C# 如何根据某些条件更改datatable中的特定列数据,c#,asp.net,.net,datatable,datarow,C#,Asp.net,.net,Datatable,Datarow,我有以下情况: 我通过一个按钮根据用户数据输入,逐行添加到Datatable dtItems 我的数据表中的一列是Hours,我希望达到以下条件: 1-对于每个用户,总小时数小于或等于5小时 2-默认值:如果用户输入一行,则小时数=5 如果他进入两行,则将第一行设为4,第二行设为1 如果他进入三行,那么第一行是3,第二行是1,第三行是1 等等 3-每个用户的最大行数为5 像这样: 用户id |姓名|小时数 323 | jo | 3 323 | jo | 1 323 | jo | 1 324
Datatable dtItems
我的数据表中的一列是Hours
,我希望达到以下条件:
- 1-对于每个用户,总小时数小于或等于5小时
- 2-默认值:如果用户输入一行,则小时数=5 如果他进入两行,则将第一行设为4,第二行设为1 如果他进入三行,那么第一行是3,第二行是1,第三行是1 等等
- 3-每个用户的最大行数为5
323 | jo | 3 323 | jo | 1 323 | jo | 1 324 |杰克| 4 324 |杰克| 1
我假设在将数据行的
Hour
字段插入数据库之前,您不知道如何相应地更改这些字段
您只需要知道第一个数据行的新hour
,其他数据行的时间为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;
}
非常感谢,嗯,不,我想
所有员工
,但条件是根据emp\u num
,请查看上表,我编辑它以澄清问题idea@just_name当前位置再次编辑我的答案,我认为现在应该可以了。否则,您现在应该知道在哪里摆弄;)
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;
}
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;
}
}