C# 将SQL列中的项与数组进行比较
我有一个SQL server表,我想在其中查询值等于数组中某个项的行上的项。下面是我的例子: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",
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的问题上了。谢谢你的帮助。