首页 / 问答 / C#/.NET/.NET Core应用程序编程开发中如何向SqlCommand传递数组参数?

C#/.NET/.NET Core应用程序编程开发中如何向SqlCommand传递数组参数?

.NET C# SQL .NET Core 2.28K 次浏览
0

C#/.NET/.NET Core应用程序编程开发中,在做IN查询的时候,如何向SqlCommand传递数组参数?

比如有类似这样的查询语句,如下:

string sqlCommand = "SELECT * from TableA WHERE Age IN (@Age)";
SqlConnection sqlCon = new SqlConnection(connectString);
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlCon;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sqlCommand;
sqlComm.CommandTimeout = 300;
sqlComm.Parameters.Add("@Age", SqlDbType.NVarChar);
StringBuilder sb = new StringBuilder();
foreach (ListItem item in ddlAge.Items)
{
     if (item.Selected)
     {
         sb.Append(item.Text + ",");
     }
}

sqlComm.Parameters["@Age"].Value = sb.ToString().TrimEnd(',');

其中的Age查询条件是一个数组,如何将这个数组作为SqlCommand的参数传递到需要执行的SQL语句中呢?

回复 [×]
提交评论
请输入评论内容

3 个回答

  • 0

    将数组用逗号连接起来,然后使用SqlCommand.Parameters.AddWithValue()方法将其添加到参数集合中去,如下:

    或者,如果为了复用,你也可以为数组类型的参数的IN查询创建一个静态扩展方法,如下:

    调用示例如下:

    Rector的个人主页

    Rector

    2020-04-26 回答

    • 0

      以下是一个基于泛型的静态扩展方法:

      调用示例如下:

      Rector的个人主页

      Rector

      2020-04-26 回答

      • 0

        如果你使用的是Dapper,可以如下:

        Rector的个人主页

        Rector

        2020-04-26 回答

        我来回答