我有一个列表要传递给SQL,但它们必须是单引号和逗号分隔。
所以List = a b c
但我需要一个string = 'a','b','c'
如何以简洁的方式完成此任务?
我认为这样的事情却无法在LINQ中看到如何添加到开头和结尾:
String.Join(",", arr.Select(p => p.ToString()).ToArray())
答案 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'"
。