通过附加连接将字符串数组转换为逗号分隔的字符串
Convert Array of Strings to Comma Separated String with additional concatenation
有没有办法将字符串列表转换为逗号分隔的字符串?
String[] data = new String[] { "test", "abc", "123" }
转换为:
'test', 'abc', '123'
可能的解决方案:
- 用
''
包围每个字符串,然后在列表中使用 String.join
。
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 存储过程中。
有没有办法将字符串列表转换为逗号分隔的字符串?
String[] data = new String[] { "test", "abc", "123" }
转换为:
'test', 'abc', '123'
可能的解决方案:
- 用
''
包围每个字符串,然后在列表中使用String.join
。 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 存储过程中。