2017-01-09 44 views
0

我正在研究一個項目,我想要一個C#對象並將其導出到CSV文件。C#將字符串轉換爲多個CSV輪廓列?

出口的對象,看起來像這樣的偉大工程:

public class Person 
{ 
    public string Name { get; set; } 
    public string Height { get; set; } 
    public string Address { get; set; } 
    public string FavoriteColor { get; set; } 
} 

在上述情況下,CSV代碼,我有出口,看起來像以下文件:

Name Height Address  FavoriteColor 
--------------------------------- 
Debacle 6 feet 123 Hope St Yellow 
Yarn 5 feet 321 Despair Blue 

但是,當我試圖增加複雜性,使它迴避我:

public class Person 
{ 
    public string Name { get; set; } 
    public string Height { get; set; } 
    public string Address { get; set; } 
    public string FavoriteColor { get; set; } 
    public List<string> Hobbies { get; set; } 
} 

輸出如下所示:

Name Height Address  FavoriteColor Hobbies 
------------------------------------------------ 
Debacle 6 feet 123 Hope St Yellow  System.Collections.Generics.List<string> 
Yarn 5 feet 321 Despair Blue   System.Collections.Generics.List<string> 

因此,不是打印出Hobbies對象,而是打印出對象的類型和內存位置。

我試圖找到一種方法把它從清單中抓住並打印出來的東西看起來更像是這樣的:

Name Height Address  FavoriteColor Hobbie1 Hobbie2 Hobbie3 
---------------------------------------------------------------- 
Debacle 6 feet 123 Hope St Yellow  reading writing otherstuff 
Yarn 5 feet 321 Despair Blue   yes  no 

但是我來了空白如何動態生成這些列。 我已經將List對象更改爲逗號描述的字符串,字典等,但我無法獲得所需的功能。

C#中有沒有一招我可能會失蹤?

非常感謝您的幫助!

+0

您可以發佈您用於將對象轉換爲CSV的導出代碼嗎? –

+0

你的個人課程中你的ToString方法是什麼樣的?你如何試圖輸出「愛好」列表,因爲它很可能需要一個循環來輸出單個項目。例如:Foreach(興趣中的字符串hobby)。 – JohnG

+0

您沒有創建一個CSV,其中**之間會有**逗號**。如果你希望這些值排成一列,那麼你必須**使用空格來填充**值,以使它們對齊,或者用** TABS **分隔這些值(這可能需要額外的調整,取決於各個值的長度)。無論如何,如果你有一個'Lists '值,你可以使用如下代碼快速輸出:'String.Join(「,」,Hobbies.ToArray());'。 –

回答

1

你將不得不通過收集來獲得個人愛好。以下是您可以添加到您的Person類以幫助輸出信息的兩種方法。

public string GetHobbies() { 
    StringBuilder sb = new StringBuilder(); 
    foreach (string hobbie in Hobbies) { 
    sb.Append(hobbie + " "); 
    } 
    return sb.ToString(); 
} 

public override string ToString() { 
    return Name + " " + Height + " " + Address + " " + FavoriteColor + " " + GetHobbies(); 
} 
+0

謝謝!這將附加到一個字符串(這很酷),但我不知道下一部分將業餘愛好解析成單個列(在Excel中是csv)會在這裏起作用。 – Debacle

+0

@Debacle要將業餘愛好分成列,你可以使用'foreach'循環。每次它循環時,你都會想把這個hobbie放到不同的列中。如果它不工作,我將不得不看你的代碼。 – JohnG