2010-07-13 21 views
2

將整數數組轉換爲內聯元素的最簡單方法是什麼?我在想像一個執行轉換的匿名函數。將數組轉換爲內聯字符串

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

回答

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); 

(我沒見過,今天之前!)

3

用的string.join,對於.NET 4.0:

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

該作品因爲String.Join現在有一個需要IEnumerable的過載<T>,

爲3.5,可以使用

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

對於以前的.NET版本,請參閱喬恩長柄水杓更完整的答案。

+0

@喬恩 - 會不會它使用'加入(字符串,IEnumerable )'超負荷? – 2010-07-13 10:41:41

+0

+1 - 我沒有想到會工作。 Doh ...沒有看到IEnumerable 過載(.NET 4新增功能)。 – 2010-07-13 10:41:54

+0

@Jon謝謝,我編輯回到原始的答案;在我用我的可信編譯器確認它之後:-) – driis 2010-07-13 10:52:36

0

ReSharper的給了我這樣的:

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

這可能會變得非常慢,因爲它會在每次迭代時複製字符串。基本上你會以O(n^2)的複雜性結束。 – 2010-07-13 10:43:56