C#将字符串转换为多个CSV描绘的列?

时间:2017-01-09 22:33:44

标签: c# csv export

我正在开展一个项目,我希望有一个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

但是当我试图增加DO的复杂性时,它会对我产生反感:

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#中是否有我可能缺少的技巧?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分: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();
}