通过附加连接将字符串数组转换为逗号分隔的字符串

Convert Array of Strings to Comma Separated String with additional concatenation

有没有办法将字符串列表转换为逗号分隔的字符串?

String[] data = new String[] { "test", "abc", "123" }

转换为:

'test', 'abc', '123'

可能的解决方案:

  1. '' 包围每个字符串,然后在列表中使用 String.join
  2. Foreach 列表中的每个字符串并连接 ''',' 最后删除最后一个 ','

是否有任何简单的 Linq(一行表达式)可以做到这两个?

您可以使用聚合 linq

Array.Skip(1).Aggregate(Array[0],(a,b) => string.Format("{0},'{1}'",a,b));
String[] data = new String[]{"test","abc","123"};
var result = string.Join(",", data.Select(o => string.Concat("'",o,"'"));

Is there any simple Linq (one line expression) to do both.

string.Join(",", data.Select(item => "'" + item + "'"))

Linq 基础知识:转换是 Select 语句。过滤器是 Where 语句。

就是说,有很多不是 Linq 的字符串操作工具可用,而且它们更有可能针对字符串进行优化,所以我总是在寻找 Linq 之前先看看它们。

您还可以使用聚合方法: 示例:

List<string> fruit = new List<string> {"Apple", "Orange", "Pear", "Tomato", "Banana"};
var fruitSentence = fruit.Aggregate((current, next) => $"{current},{next}");

注意:如果您从 IEnumerable 或类似的开始,则必须在 LINQ 语句的末尾调用 .ToArray(),如下所示:

input parameter: IEnumerable<string> feederIdList    

var feederListString = String.Join(",", feederIdList.Select(feeder => "\"" + feeder + "\"").ToArray());

在我的例子中,我需要每个字符串都用双引号引起来,以便稍后传递到 Oracle 存储过程中。