C# 如何迭代数据库记录并每x行更新一次,然后重置并重复?

C# 如何迭代数据库记录并每x行更新一次,然后重置并重复?,c#,C#,我正在返回下面的记录集。我想完成的是下面发布的数据。因此,我需要用一个递增的formNum更新每个numberrup记录。在这种情况下,问题是每三条记录都会被跳过。当代码检查idx==numberrup时,这是第三次迭代。我错过了什么?任何帮助都将不胜感激 以前的数据 Quantity TransitDays Form NumberUp 1750 3 0 2 1750 3 0 2 1750

我正在返回下面的记录集。我想完成的是下面发布的数据。因此,我需要用一个递增的formNum更新每个numberrup记录。在这种情况下,问题是每三条记录都会被跳过。当代码检查idx==numberrup时,这是第三次迭代。我错过了什么?任何帮助都将不胜感激

以前的数据

Quantity    TransitDays Form    NumberUp
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
1750        3           0       2
数据之后

Quantity    TransitDays Form    NumberUp
1750        3           1       2
1750        3           1       2
1750        3           2       2
1750        3           2       2
1750        3           3       2
1750        3           4       2
1750        3           5       2
1750        3           5       2
1750        3           6       2
1750        3           6       2
1750        3           0       2

你不需要这两个变量

    int ctr = 0;
    foreach (var item in query)
    {
        if (ctr % 2 = 0)
        {
            item.Form = ctr;
            db.SaveChanges();               
        }
        ctr++;
    }

使用数据库的经验法则:避免在客户机代码中进行数据库操作:这样做效率极低,而且容易出错。创建一个SQL(或者可能是LINQ)查询,并调用它。您能给出一个示例代码,说明您建议如何实现这一点吗?我正在使用上面发布的LINQ。请同时显示该表的
CREATE TABLE
脚本。
db.SaveChanges()感觉不太好,它会立即为您拥有的每一项执行更新查询。无论如何,如果您想批量处理每一百个项目,您可以先对它们进行处理,然后对每个组进行保存更改。或者只是做一个一般的计数。@BagusTesa很可能一个SQL语句就可以完成所有的更改-但是在看到
CREATE TABLE
和预期结果之前,我们无法确定。
CreateTable(
    "dbo.Runlist",
    c => new
        {
            Quantity = c.Int(nullable: false),
            TransitDays = c.Int(nullable: false),
            Form = c.Int(nullable: true),
            NumberUp= c.Int(nullable: true)
        })
    int ctr = 0;
    foreach (var item in query)
    {
        if (ctr % 2 = 0)
        {
            item.Form = ctr;
            db.SaveChanges();               
        }
        ctr++;
    }