C# C:如何将值列表添加到MySQL WHERE IN子句中
我有一个值列表,希望在查询中使用它,但如何将每个带引号的值添加到mysql where子句中C# C:如何将值列表添加到MySQL WHERE IN子句中,c#,mysql,C#,Mysql,我有一个值列表,希望在查询中使用它,但如何将每个带引号的值添加到mysql where子句中 List <string> customerlist = new List<string>(); sql = SELECT * FROM customerlist WHERE custid IN customerlist 我得到这个错误: 我需要在它们周围加上引号。你能告诉我怎么做吗?你需要加入他们 string.Join(',', customerList.Select(x
List <string> customerlist = new List<string>();
sql = SELECT * FROM customerlist WHERE custid IN customerlist
我得到这个错误:
我需要在它们周围加上引号。你能告诉我怎么做吗?你需要加入他们
string.Join(',', customerList.Select(x => "'" + x "'").ToArray());
这将为您提供“Clair”、“Alex”、“Bob”您可以使用Select添加引号并连接以创建逗号分隔的列表:
var clause = String.Join("," , customerlist.Select(s => "'" + s + "'"));
请注意,任何包含单引号的字符串都会导致语法问题。如果是这种情况,或者如果你想安全起见,那么在投射时只需避开它们:
var escaped = customerlist.Select(s => "'" + s.Replace("'", "''") + "'";
var clause = String.Join("," , escaped));
还要注意的是,像Entity Framework这样的DB框架有一些方法,您可以在这些方法中提供一个值列表,并将为您生成等效的SQL。这里有一个不使用LINQ的建议:
private void Example()
{
List<string> customerlist = new List<string>();
customerlist.Add("co111");
customerlist.Add("co112");
customerlist.Add("co114");
// string in SQL needs "'"
ConvertToSqlString(ref customerlist);
// use String.Join() to seperate with ","
var sql = @"SELECT * FROM customerlist
WHERE custid IN (" + String.Join(",",customerlist) + ")";
}
private void ConvertToSqlString(ref List<string> lst)
{
for(int i = 0;i<lst.Count;i++)
{
lst[i] = "'" + lst[i] + "'";
}
}
您使用的是什么数据库访问技术?非常感谢,这很有效。我正在使用ADO.NET连接MYSQL数据库。我只需要使用第一行示例。