【问题标题】:string.Join For comma-separated valuesstring.Join 用于逗号分隔的值
【发布时间】:2011-09-13 08:32:56
【问题描述】:

借助string.join,我们可以拆分以逗号分隔的值列表。

string.join(",", array)

我可以对CheckboxList 数据源执行相同的操作吗? 我为此有一个DataValueField,需要一个逗号分隔的值而不进行迭代。

【问题讨论】:

  • 需要做一些迭代;也可能是你。
  • 你的意思是string.Join(",", (IEnumerable<object>)checkboxlist.DataSource)
  • 为什么需要不迭代就做? string.join 也迭代,必须!。
  • @Roger, #Hemal, String.Join 迭代并处理最后一个不同的问题,非常值得使用。

标签: c# string checkboxlist


【解决方案1】:

是的,在 Fx4 中,String.Join() 的重载需要 IEnumerable<string>

但这取决于 DataSource 属性实际指向的内容,大致如下:

string line = string.Join(",",  ComboBox1.DataSource.Select(x => x.Name) );

您可能需要不同的 lambda,以及 DataSource 的一些类型转换。

编辑:

var data = (List<MyClass>) (ComboBox1.DataSource);
string line = string.Join(",",  data.Select(x => x.Name) );

【讨论】:

  • 我有一个类,数据源的返回类型是 List。那我该怎么办呢?
  • OP 说它是List&lt;MyClass&gt;,但确实没有必要强制转换,强制转换为IEnumerable&lt;MyClass&gt; 显然就足够了
  • 是的,但如果您确定是List&lt;&gt;,您应该经常检查。
【解决方案2】:

可以利用鲜为人知的 CommaDelimitedStringCollection 让生活更轻松......

using System.Configuration;

var strList = new CommaDelimitedStringCollection();
strList.AddRange(ComboBox1.DataSource.Select(x => x.Name.ToString()));
var commaListStr = strList.ToString();

更多信息在这里...http://www.idevforfun.com/index.php/2010/02/07/comma-delimited-lists/

【讨论】:

    【解决方案3】:

    string.Join() 解决方案显然有效,如果您喜欢 LINQ-ing,您还可以聚合逗号分隔值字符串:

    var list = (List<MyClass>)(ComboBox1.DataSource);
    string commaSeparatedValues = list.Select(v => v.Name).Aggregate((current, next) => string.Concat(current, ",", next));
    

    请注意在处理大量此类字符串时可能会影响性能。

    【讨论】:

      猜你喜欢
      • 2022-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      相关资源
      最近更新 更多