代码之家  ›  专栏  ›  技术社区  ›  Paul Fryer

Linq的聚合函数,如何生成CSV字符串

  •  6
  • Paul Fryer  · 技术社区  · 15 年前

    我想用Linq的聚合函数生成一个逗号分隔的值字符串。有人知道怎么做吗?

    给定如下字符串数组:

    var authors = new string[] {"author 1", "author 2", "author 3"};
    

    作者1,作者2,作者3 我在想 authors.Aggregate(author => author + ",") 也许能做到但不确定。

    思想?

    2 回复  |  直到 15 年前
        1
  •  12
  •   Bennor McCarthy    15 年前

    如果你只想用逗号把它们分开,就用字符串。连接:

    string.Join(", ", authors);
    

    这将适用于任何IEnumerable<string>(至少在.NET4.0中是这样),但从1.0开始就适用于字符串数组。

        2
  •  7
  •   Ani    15 年前

    就像本诺·麦卡锡说的,你最好用 string.Join 为此目的。如果你真的想用 Enumerable.Aggregate 不过,这应该做到:

    string csvString = authors.Aggregate((csvSoFar, author) => csvSoFar + ", " + author);
    

    这大致相当于:

    string csvString = authors.First();
    
    foreach (string author in authors.Skip(1))
    {
        csvString += ", " + author;
    }
    
    推荐文章