将数组转换为内联字符串

时间:2010-07-13 10:36:52

标签: c# arrays anonymous-function

将整数数组转换为枚举内联元素的字符串的最简洁方法是什么?我正在考虑执行转换的匿名函数。

var array = new int[] { 1, 2 }
var s = string.Format("{0}", 
                      new [] 
                      { /*inline transform array into the string "1, 2"*/ });

4 个答案:

答案 0 :(得分:7)

使用string.Join。在.NET 3.5及更早版本中,您需要先转换为字符串数组;在.NET 4中,有一个重载IEnumerable<T>。所以取决于你的版本:

.NET 2.0或3.0 / C#2:

string s = string.Join(", ",
    Array.ConvertAll(delegate(int x) { return x.ToString(); });

.NET 2.0或3.0 / C#3:

string s = string.Join(", ", Array.ConvertAll(x => x.ToString());

.NET 3.5 / C#3:

string s = string.Join(", ", array.Select(x => x.ToString()).ToArray());

(或者如果您愿意,可以使用适用于.NET 2.0的版本。)

.NET 4:

string s = string.Join(", ", array);

(我今天才看到它!)

答案 1 :(得分:3)

使用String.Join,适用于.NET 4.0:

var s = String.Join(", ",array);

这是有效的,因为String.Join现在有一个带有IEnumerable&lt; T&gt;的重载,

对于3.5,您可以使用

var s = String.Join(", ", array.Select(n => n.ToString()).ToArray());

对于以前的.NET版本,请参阅Jon Skeets更完整的答案。

答案 2 :(得分:1)

如果你在.Net 4:

var array = new int[] { 1, 2 };
var s = String.Join(", ", array);

添加了String.Join<T>(string, IEnumerable<T>)重载:)

答案 3 :(得分:0)

ReSharper给了我类似的东西:

    public static string EnumerateToString(this int[] a, string separator)
    {
        return a.Aggregate("", (current, i) => current + i.ToString(separator));
    }