如何根据列表长度将列表转换为字符串?

时间:2015-08-06 12:19:33

标签: linq

这对我来说是一个古老的问题我希望能用linq解决。

假设我有一个列表 foo ,其字母为A-E,我想构建一个如下所示的串联字符串字符串:

  

a& b& c& d& ë

这可以构建整个列表,但是有额外的" &安培; "最后

var myString = "";
foo.ForEach(x => myString += String.Format("{0} &  ", x));

我喜欢找到一个干净的单行解决方案来构建这个(减去最后的额外连接符,而不必编写扩展方法。

3 个答案:

答案 0 :(得分:2)

如何将其更改为string[],然后join呢?

List<string> foo;
// ...
string joinedString = string.Join(" & ", foo.ToArray());

// or, as vc 74 pointed out below, in .NET 4+ you can do
string joinedString = string.Join(" & ", foo);

答案 1 :(得分:2)

var concatstring = String.Join("&", foo);

答案 2 :(得分:0)

LINQ可以使用Aggregate来完成。 String.Join更好,但有一条评论说LINQ不能做这类事情,所以......

    [TestMethod]
    public void TestAggregate()
    {
        List<string> input = new List<string>{"A", "B", "C"};
        string output = input.Aggregate((list, next) => list + " & " + next);
        Assert.AreEqual(output, "A & B & C");
    }