Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据某些条件更改datatable中的特定列数据_C#_Asp.net_.net_Datatable_Datarow - Fatal编程技术网

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
像这样:

用户id |姓名|小时数


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;
    }
}