C# 在何处使用多个参数
我有一个名为idList的int列表。我想为该idList中的每个id更新TaskState表中的TaskState。这就是我的代码现在的样子:C# 在何处使用多个参数,c#,sql,sql-server,C#,Sql,Sql Server,我有一个名为idList的int列表。我想为该idList中的每个id更新TaskState表中的TaskState。这就是我的代码现在的样子: using (SqlConnection dataconnection = new SqlConnection(DB)) { SqlCommand sqlCommandDelete = new SqlCommand() { Connection = dataconnection }; dataconne
using (SqlConnection dataconnection = new SqlConnection(DB))
{
SqlCommand sqlCommandDelete = new SqlCommand()
{
Connection = dataconnection
};
dataconnection.Open();
foreach (var id in idList)
{
qlCommandDelete.CommandText = $"UPDATE Tasks SET TaskState = 2 WHERE TaskID = {id}";
sqlCommandDelete.ExecuteNonQuery();
}
}
现在的问题是每次循环触发时我都执行。是否有可能连接所有TaskID并只执行一次 你可以这样做
var ids = idList.Aggregate((x, y) => $"{x}, {y}")
然后编写sql文本,如下所示
qlCommandDelete.CommandText = $"UPDATE Tasks SET TaskState = 2 WHERE TaskID in ({ids})";
例如,
$“UPDATE…WHERE TaskID IN({String.Join(“,”,idList)})”
您可以尝试使用TVP+1,假设TaskID是像Int这样的注入安全类型。只需使用String.Join
-即可保存连接问题。但是,查询中存在一些问题,因此对于大量TaskID,可能仍然需要批处理。对于弦,