2012-07-05 181 views
5

當創建web服務,在c#,我已發現它是非常有用的回傳交錯數組,即串[] []轉換列表<列表<string[]>>入串[]​​ [] [],在c#

我還發現了一個巧妙的方法來在我的代碼中以簡單的方式構建這些方法,即創建一個List並通過執行ToArray()調用將其轉換。

例如

public string[][] myws() { 
    List<string[]> output = new List<string[]>(); 
    return output.ToArray(); 
} 

我希望能夠採用類似的解決方案,但我想不出如何做一個3級交錯數組或字符串[] [] []類似的東西,而不訴諸循環和這樣。

問候 馬丁

回答

6

您可以通過使用ToArray()Select()每個內List<string>轉換到一個數組,然後使用ToArray()將這些結果那裏:

 var x = new List<List<string[]>>(); 

     string[][][] y = x.Select(a => a.ToArray()).ToArray(); 

等了如你想去的地方有很多層次。

+5

要明確這不是避免「循環等」,它只是埋藏在LINQ內部的那些循環的實現。這是正確的答案。 – 2012-07-05 16:28:56

+0

@RobertLevy:真的,它只是*避免了*循環的意義,因爲它有一個更清晰的外觀,內部,是它仍然循環 - 不幸的是從某個列表到某個列表的任何轉換都會顯式或隱式執行循環... – 2012-07-05 16:29:40

+0

@RobertLevy:實際上,'List .ToArray()'只是做一個'Array.Copy()',因爲'List '的底層存儲已經是'Array'了。 – 2012-07-05 16:36:27

相關問題