我正在开展一个项目,我希望有一个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#中是否有我可能缺少的技巧?
非常感谢您的帮助!
答案 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();
}