C# - IEnumerable分隔字符串

Jer*_*emy 17 c# functional-programming

将一个IEnumerable<string>字符串转换为分隔字符串的函数式编程方法是什么?我知道我可以使用一个循环,但我正试图绕过函数式编程.

这是我的例子:

var selectedValues =
from ListItem item in checkboxList.Items
where item.Selected
select item.Value;

var delimitedString = ??
Run Code Online (Sandbox Code Playgroud)

..或者我可以在第一个var赋值中执行此操作(将每个结果追加到前一个)?

Tom*_*ter 34

string.Join(", ", string[] enumerable)
Run Code Online (Sandbox Code Playgroud)

  • +1,但我会说string.Join(",",selectedValues.ToArray()) (2认同)
  • @Lucas,如果您使用的是.NET 4,请不要这样做.http://msdn.microsoft.com/en-us/library/dd992421.aspx (2认同)

Dan*_*bić 23

这是一个例子StringBuilder.好处是Append()返回StringBuilder实例本身.

  return list.Aggregate( new StringBuilder(), 
                               ( sb, s ) => 
                               ( sb.Length == 0 ? sb : sb.Append( ',' ) ).Append( s ) );
Run Code Online (Sandbox Code Playgroud)


Ily*_*kov 19

var delimitedString = selectedValues.Aggregate((x,y) => x + ", " + y);
Run Code Online (Sandbox Code Playgroud)

  • 就中间字符串而言,这将是非常昂贵的.非常FP,但不是很实用.http://www.yoda.arachsys.com/csharp/stringbuilder.html (6认同)
  • @Marc,我回答了问题,这是关于FP,而不是关于性能. (4认同)