gpt4 book ai didi

c# - 使用自定义值更新

转载 作者:行者123 更新时间:2023-11-29 10:51:51 24 4
gpt4 key购买 nike

我有在 C# 中运行的代码,该代码的作用是:

循环访问用户列表并更新表中的行。

UPDATE CustomerUser 
SET
LoginName = @LoginName,
UserName = @UserName,
IsActive = @IsActive,
IsDeleted = @IsDeleted,
DeletedDate = @DeletedDate,
Modified = CURRENT_TIMESTAMP()
WHERE ID = @CustomerUserID;

在 C# 代码中,它会对 LoginName 和 userName 列进行一些连接。

我想用 SQL 语句替换那个缓慢的 C# 进程,该语句执行如下所示的操作。我对 SQL 有足够的了解,认为我所问的问题可能完全疯狂,但除非你问,否则永远不会知道。

UPDATE CustomerUser 
SET
LoginName = select concat( login,uniqueid) from CustomerUser where id **this would be an ID that is in the IN() of parent query**
UserName = @UserName,
IsActive = @IsActive,
IsDeleted = @IsDeleted,
DeletedDate = @DeletedDate,
Modified = CURRENT_TIMESTAMP()
WHERE ID **IN(1,2,3,4, etc...)**;

最佳答案

您可以更改查询以删除 SELECT 子查询,然后执行以下操作:

UPDATE CustomerUser
SET LoginName = CONCAT(LoginName, UserName)
-- Other fields, etc..
WHERE ID **IN(1,2,3,4, etc...)**;

如果您在 C# 中执行此操作,我建议使用 Entity Framework 而不是 SQL 查询字符串。我只将其与 SQL Server 一起使用,但此处讨论了有关将其与 MySQL 一起使用的信息:

Using MySQL with Entity Framework

使用 Entity,您可以通过编写一个函数来实现此目的,该函数包含要更新的所有 id 列表作为参数:

void UpdateCustomerUsers(ICollection<int> ids)
{
using (var context = new MyDbContext())
{
var customerUsers = context.CustomerUsers.Where(cu => ids.Contains(cu.ID));

foreach (var cu in customerUsers)
{
cu.LoginName = cu.LoginName + cu.UserName;
cu.Modified = DateTime.Now;
// and so on...
}

context.SaveChanges();
}
}

关于c# - 使用自定义值更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43593298/

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