如何将数组转换为引号和逗号分隔的sql字符串?

时间:2018-05-30 01:45:21

标签: c# linq

我有一个列表要传递给SQL,但它们必须是单引号和逗号分隔。

所以List = a b c

但我需要一个string = 'a','b','c'

如何以简洁的方式完成此任务?

我认为这样的事情却无法在LINQ中看到如何添加到开头和结尾:

String.Join(",", arr.Select(p => p.ToString()).ToArray())

4 个答案:

答案 0 :(得分:3)

可能有以下几点:

String.Join(",", arr.Select(p=> "'" + p.ToString() + "'").ToArray());

// or is p already a string

String.Join(",", arr.Select(p => "'" + p + "'").ToArray());

答案 1 :(得分:2)

你可以这样做:

String.Join(",", arr.Select(p => $"'{p.ToString()}'").ToArray());

这会将'放在p.ToString()的每一个元素的任意一侧。

答案 2 :(得分:1)

使用支持以下构造的ORM:

string[] items = GetItems();
var query = db.Rows.Where(row => items.Contains(row.ColumnName));

这样,你就不会通过构建字符串来自己打开数据库来自己打开数据库。

答案 3 :(得分:1)

如果您的源数据包含"'",您还应该小心,在这种情况下您需要转义"'"。试试这个:

var arr = new [] { "a'c", "b" };

var output = String.Join(",", arr.Select(p => $"'{p.Replace("'", "''")}'"));

这给了"'a''c','b'"