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

C# 如何将数组转换为sql的引号和逗号分隔字符串?,c#,linq,C#,Linq,我有一个要传递到SQL的列表,但它们必须是单引号和逗号分隔的 所以List=abc 但是我需要一个string='a','b','c' 如何以简洁的方式完成此任务 我想是这样,但在LINQ中看不到如何添加开头和结尾: String.Join(",", arr.Select(p => p.ToString()).ToArray()) 您可以这样做: String.Join(",", arr.Select(p => $"'{p.ToString()}'").ToArray()); 这

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

所以
List=abc

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

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

我想是这样,但在LINQ中看不到如何添加开头和结尾:

String.Join(",", arr.Select(p => p.ToString()).ToArray())
您可以这样做:

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

这将使每个元素的
'
位于
p.ToString()
的两侧。

可能与以下内容类似:

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

// or is p already a string

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

使用支持以下构造的ORM:

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

这样,您就不会通过自己构造字符串将自己交给数据库来打开sql注入。

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

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

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

这就给了
“'a''c','b'

原始列表的可用格式?原始列表是我使用过的列表。添加以更新它的值。
String.Join(“,”,arr.Select(p=>”“+p.ToString()+”)
?这闻起来像,例如,生成要在子句中使用的值字符串,或以可怕的非规范化方式存储CSV字符串。可能有更好的方法来解决实际问题。
.ToArray()
是多余的。CS1056:意外的字符“$”,我认为您缺少右括号?