2012-12-11 38 views
4

誰能幫我創建一個從列表的CSV文件,我的情況是,我有類似下面一多維值列表如何創建列表的CSV文件<String[]>

List<string[]> lst = new List<string[]>(); 
lst= csv1.ToList(); 

LST包含的值像,

lst[0] = {string[53]} 
lst[1] = {string[53]} 
lst[2] = {string[53]} 
lst[3] = {string[53]} 
lst[4] = {string[53]} 

和string [53]包含像

lst[0] 
    string[0] = "abc" 
    string[1] = "def" 
    string[2] = "ghi" 
    string[3] = "jkl" 
    string[4] = "mno" 
    ... 
lst[1] 
    string[0] = "123" 
    string[1] = "456" 
    string[2] = "789" 
    string[3] = "10" 
    string[4] = "11" 
    ... 

我只想值寫這個多維列表到CSV文件作爲LST [],在CSV行的每個項目和字符串[]以列的每個項目,使得我的CSV最終輸出是

abc,def,ghi,jkl,mno 
123,456,789,10,11 

任何幫助將是非常感謝。

+0

我試過這樣的,字符串CSV =字符串.Join(「,」,lst.Select(x => x.ToString())。ToArray());但我沒有得到輸出。 –

回答

12

最簡單的級別,不處理引用/轉義/多行CSV問題,然後只是循環;也許是這樣的:

using (var file = File.CreateText(path)) 
    { 
     foreach(var arr in lst) 
     { 
      file.WriteLine(string.Join(",", arr)); 
     } 
    } 

微小位更有效(無中介字符串):

using (var file = File.CreateText(path)) 
    { 
     foreach (var arr in lst) 
     { 
      if (String.IsNullOrEmpty(arr)) continue; 
      file.Write(arr[0]); 
      for(int i = 1 ; i < arr.Length ; i++) 
      { 
       file.Write(','); 
       file.Write(arr[i]); 
      } 
      file.WriteLine(); 
     } 
    } 
+0

你的第二個例子是在每個記錄 –

17

使用LINQ:

File.WriteAllLines("text.txt", lst.Select(x => string.Join(",", x))); 
+2

+1上添加一個額外的逗號和Marc Gravell的一個......只要文本中沒有逗號,這兩個都是好的......如果有 - 需要了解目標格式並適當編碼逗號/引號。 –