字符串添加 - c#截取字符串




IEnumerable以分隔字符串 (6)

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

这是我的例子:

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

var delimitedString = ??

..或者我可以这样做,只是在第一个无功赋值(追加每个结果到以前)?


AviewAnew是最好的答案,但是如果你正在寻找的是学习如何在功能上思考,你应该做的是使用折叠操作(或在NET中称为聚合)。

items.Aggregate((accum, elem) => accum + ", " + elem);

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

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

那么在这种情况下,函数方法可能不是最合适的,因为没有LINQ“ForEach”,而且你不想使用字符串连接:你想使用StringBuilder。 你可以使用ToArray(上面刚刚出现的一个例子),但我会试图简单地使用:

    StringBuilder sb = new StringBuilder();
    foreach(ListViewItem item in checkboxList.SelectedItems) {
        if(sb.Length > 0) sb.Append(',');
        sb.Append(item.Text);
    }
    string s = sb.ToString();

没有函数式编程,但它的工作原理...当然,如果你的源已经是一个字符串[]然后string.Join是完美的。 (LINQ是一个很好的工具,但不一定总是每个工作的最佳工具)


var delimitedString = string.Join(",", checkboxList.Items.Where(i => i.Selected).Select(i => i.Value).ToArray());

string.Join(", ", string[] enumerable)

这是3.5兼容:

var selectedValues = String.Join(",", (from ListItem item in checkboxList.Items where item.Selected select item.Value).ToArray());






functional-programming