Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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:如何将值列表添加到MySQL WHERE IN子句中_C#_Mysql - Fatal编程技术网

C# C:如何将值列表添加到MySQL WHERE IN子句中

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

我有一个值列表,希望在查询中使用它,但如何将每个带引号的值添加到mysql where子句中

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数据库。我只需要使用第一行示例。