Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在何处使用多个参数_C#_Sql_Sql Server - Fatal编程技术网

C# 在何处使用多个参数

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

我有一个名为idList的int列表。我想为该idList中的每个id更新TaskState表中的TaskState。这就是我的代码现在的样子:

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,可能仍然需要批处理。对于弦,