C# 如何迭代数据库记录并每x行更新一次,然后重置并重复?
我正在返回下面的记录集。我想完成的是下面发布的数据。因此,我需要用一个递增的formNum更新每个numberrup记录。在这种情况下,问题是每三条记录都会被跳过。当代码检查idx==numberrup时,这是第三次迭代。我错过了什么?任何帮助都将不胜感激 以前的数据C# 如何迭代数据库记录并每x行更新一次,然后重置并重复?,c#,C#,我正在返回下面的记录集。我想完成的是下面发布的数据。因此,我需要用一个递增的formNum更新每个numberrup记录。在这种情况下,问题是每三条记录都会被跳过。当代码检查idx==numberrup时,这是第三次迭代。我错过了什么?任何帮助都将不胜感激 以前的数据 Quantity TransitDays Form NumberUp 1750 3 0 2 1750 3 0 2 1750
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()在foreach循环上的code>感觉不太好,它会立即为您拥有的每一项执行更新查询。无论如何,如果您想批量处理每一百个项目,您可以先对它们进行处理,然后对每个组进行保存更改。或者只是做一个一般的计数。@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++;
}