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# 将SQL列中的项与数组进行比较_C#_Sql_Sql Server_Arrays - Fatal编程技术网

C# 将SQL列中的项与数组进行比较

C# 将SQL列中的项与数组进行比较,c#,sql,sql-server,arrays,C#,Sql,Sql Server,Arrays,我有一个SQL server表,我想在其中查询值等于数组中某个项的行上的项。下面是我的例子: Column1 Column2 Column3 ------- ------- ------- aaa 100 200 bbb 100 400 aaa 200 78 ccc 200 200 和我的阵列: string[] arr = {"ddd", "aaa",

我有一个SQL server表,我想在其中查询值等于数组中某个项的行上的项。下面是我的例子:

Column1    Column2    Column3
-------    -------    -------
aaa        100        200
bbb        100        400
aaa        200        78  
ccc        200        200
和我的阵列:

string[] arr = {"ddd", "aaa", "fff", "bbb"}
因此,我想从与数组中的项匹配的SQL行返回。我的SQL查询应返回column1与数组中的项匹配的项:

Column1    Column2    Column3
-------    -------    -------
aaa        100        200
bbb        100        400
aaa        200        78  

顺便说一下,这些都是用C写的。非常感谢您的帮助。

您需要的SQL查询是

从表1中选择*,其中“ddd”、“aaa”、“fff”、“bbb”中的第1列


您可以将数组直接解析到查询中。您的帖子没有提到任何关于LINQ的内容,这将使它变得更加简单。

您可以使用IN@PARAM子句,并用String.Join连接它们,如下所示:

using(SqlConnection connection = new SqlConnection(
        connectionString)) {
    using(SqlCommand command = new SqlCommand()) {
            SqlDataReader reader = null;
        try {
            command.Connection = connection;
            command.CommandText = "SELECT * FROM <TABLE> WHERE <FIELD> IN (@PARAM)";
            command.CommandType = CommandType.Text;
            command.Parameters.Add(new SqlParameter(@"@PARAM",
                    String.Join(",", <array>)));
            connection.Open();
            reader = command.ExecuteReader();
            if(reader.HasRows) {
                // logic
            }
        } catch(SqlException) {
            throw;
        }
    }
}

项目必须用“”单引号括起来。

您可以将这些值作为表值参数传递给SP,然后将其连接到第1列的表中


你考虑过使用LINQ吗?非常适合这种多源比较。回答得很好,我想我被困在如何使用参数将数组中的值传递回SQL的问题上了。谢谢你的帮助。