gpt4 book ai didi

c# - 从 LINQ 查询批量更新?

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:03 25 4
gpt4 key购买 nike

现在我有一个应用程序,它一次处理一个数据库中的记录。

var records = from q in db.table 
join j in db.OtherTable
where q.processed == 0 //Sample
foreach(var record in records)
{
//Do some stuff....

db.ExecuteCommand("Update table set record.processed = 1 where id = record.ID");
}

在 foreach 的末尾,它更新已处理的记录。显然,因为 LINQ 在更新方面做得不好,所以我只执行了一个 executeCommand。现在要求此应用程序快速运行。现在,“Do some stuff”只需不到一秒钟的时间就可以遍历数千行,它甚至可以使用 SqlBulkCopy 将一条记录插入到表中。

问题是,当我输入代码来更新记录已处理时,它会显着减慢速度。它必须更新数据库数千次。在不损失太多速度的情况下更新我选择的所有记录(并且只更新我选择的记录)的更快方法是什么? (注意:如果在整个过程完成后(在 foreach 之后)需要一点时间,那也没关系。

最佳答案

您可以根据列表中的 ID 生成一个 IN 语句:

string ids = string.Join(", ", records.Select(r => r.RecordID));
string sql = string.Format("Update table set record.processed = 1 WHERE RecordID IN ({0}) ", ids)
db.ExecuteCommand(sql);

关于c# - 从 LINQ 查询批量更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com