写老派最有效的方法是什么:

StringBuilder sb = new StringBuilder();
if (strings.Count > 0)
{
    foreach (string s in strings)
    {
        sb.Append(s + ", ");
    }
    sb.Remove(sb.Length - 2, 2);
}
return sb.ToString();

...在LINQ吗?


当前回答

这里有很多选择。你可以使用LINQ和StringBuilder,这样你就可以得到这样的性能:

StringBuilder builder = new StringBuilder();
List<string> MyList = new List<string>() {"one","two","three"};

MyList.ForEach(w => builder.Append(builder.Length > 0 ? ", " + w : w));
return builder.ToString();

其他回答

这里有很多选择。你可以使用LINQ和StringBuilder,这样你就可以得到这样的性能:

StringBuilder builder = new StringBuilder();
List<string> MyList = new List<string>() {"one","two","three"};

MyList.ForEach(w => builder.Append(builder.Length > 0 ? ", " + w : w));
return builder.ToString();
return string.Join(", ", strings.ToArray());

在。net 4中,有一个新的重载字符串。接受IEnumerable<string>的连接。代码将如下所示:

return string.Join(", ", strings);

你可以非常有效地结合LINQ和string.join()。这里我正在从字符串中删除一个项。当然也有更好的方法,下面就是:

filterset = String.Join(",",
                        filterset.Split(',')
                                 .Where(f => mycomplicatedMatch(f,paramToMatch))
                       );

您看过聚合扩展方法了吗?

var sa = (new[] { "yabba", "dabba", "doo" }).Aggregate((a,b) => a + "," + b);

StringBuilder vs Select & Aggregate case超过3000个元素的快速性能数据:

单元测试——持续时间(秒) LINQ_StringBuilder - 0.0036644 LINQ_Select。聚合- 1.8012535

    [TestMethod()]
    public void LINQ_StringBuilder()
    {
        IList<int> ints = new List<int>();
        for (int i = 0; i < 3000;i++ )
        {
            ints.Add(i);
        }
        StringBuilder idString = new StringBuilder();
        foreach (int id in ints)
        {
            idString.Append(id + ", ");
        }
    }
    [TestMethod()]
    public void LINQ_SELECT()
    {
        IList<int> ints = new List<int>();
        for (int i = 0; i < 3000; i++)
        {
            ints.Add(i);
        }
        string ids = ints.Select(query => query.ToString())
                         .Aggregate((a, b) => a + ", " + b);
    }