有什么办法将字符串列表转换为逗号分隔的字符串吗?将字符串数组转换为逗号分隔字符串,并附加级联
String[] data = new String[] { "test", "abc", "123" }
转换成:
'test', 'abc', '123'
可能的解决方案:
- 环绕每串
''
,然后在列表上使用String.join
。 Foreach
列表中的每个字符串,并做的''
和','
,最后串联除去最后','
有没有简单的LINQ(一行表达)两者都做?
有什么办法将字符串列表转换为逗号分隔的字符串吗?将字符串数组转换为逗号分隔字符串,并附加级联
String[] data = new String[] { "test", "abc", "123" }
转换成:
'test', 'abc', '123'
可能的解决方案:
''
,然后在列表上使用String.join
。Foreach
列表中的每个字符串,并做的''
和','
,最后串联除去最后','
有没有简单的LINQ(一行表达)两者都做?
有没有简单的LINQ(一行表达)两者都做。
string.Join(",", data.Select(item => "'" + item + "'"))
基础的LINQ:变换是Select
语句。过滤器是Where
语句。
也就是说,有很多不是Linq的字符串操作工具可用,而且它们更有可能针对字符串进行优化,所以在查看Linq之前我总是看着它们。
我链接到了现在被删除的另一个问题 - http://stackoverflow.com/a/33471600/232593 - 我认为他们的代码可能比我的代码更好,即使它不使用Linq。 'return“'”+字符串。加入(“','”,data)+“'”;' –
@AsadSaeeduddin - 如果您想要取消删除您的答案,我知道我个人会赞成它,即使没有找到任何Linq。 –
我也觉得使用linq无处不在。当你从里面看linq方法时,你会发现你在程序中弄得乱七八糟,只是做一个简单的计数! –
您可以使用集合LINQ
Array.Skip(1).Aggregate(Array[0],(a,b) => string.Format("{0},'{1}'",a,b));
智能解决方案。仍然在探索/学习'linq' :) – Reddy
虽然看起来很聪明,但由于O(n^2)的表现,请不要将它用于真实代码以及多于两个项目... –
String[] data = new String[]{"test","abc","123"};
var result = string.Join(",", data.Select(o => string.Concat("'",o,"'"));
风格偏好 - 为什么要使用'Concat 'over'+'生成相同的代码? –
@AlexeiLevenkov对我来说,更容易阅读''''''分离的参数,特别是当它包含'+'和'condition'等其他操作? true:false'。例如比较'“a”+((a> 1)?“yes:”+ variable:“no one”)+“b”'和'string.Concat(“a”,(a> 1)?“是:“+ variable:”no“,”b“)' – Backs
您也可以使用聚合方法: 例子:
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存储过程。
使用var x = string.Join(“,”,yourArray);' – slugster
@slugster,我希望我在我的方法中提到 – Reddy
注意:确保你没有试图构建JSON ...可能endup与正方形被重新改变的轮子。 –