【问题标题】:Serialize list of classes c# into a csv file将类 c# 的列表序列化为 csv 文件
【发布时间】:2016-11-08 06:57:39
【问题描述】:

我有以下几点:

类宠物

public string PetType {get; set;}
public string PetName {get; set;}
public int PetAge {get; set;}

类人

public string Name {get; set;}
public int Age {get; set;}
public List<Pet> ListOfPets {get; set;}

类视图模型

public ObservableCollection<Person> People {get; set;}

我希望将People 对象序列化为csv 文件。

这样的任务能完成吗?

我找到了一个CSV Serializer,它只能处理字符串。

【问题讨论】:

  • 您如何期望ListOfPets 出现在您的 csv 文件中?
  • 我不明白这个混淆,问题明确指出:我希望将 People 对象序列化为 csv 文件。
  • 您正在创建一个难以阅读和解析的文本文件。您可以使用的一种方法是将类名添加到每个 csv 行,以便在读取文件时有一种方法可以确定 csv 行是 Pet 还是 Person。 40 多年来,我一直在解析这样的文本文件,并且可以完成。但是你必须记住,任何写入的文件也必须被读取。在编写文件时始终考虑使其尽可能易于回读。

标签: c# list csv serialization export-to-csv


【解决方案1】:

csv 文件是二维的,不能包含第三维(宠物)。 您可以手动一一添加宠物,但您会丢失 csv 文件的固定列数

这样

[Name],[Age],[Pet1Type][Pet1Name],[Pet1Age],[Pet2Type][Pet2Name],[Pet2Age]
[Name],[Age],[Pet1Type][Pet1Name],[Pet1Age]
[Name],[Age],[Pet1Type][Pet1Name],[Pet1Age],[Pet2Type][Pet2Name],[Pet2Age,[Pet3Type][Pet3Name],[Pet3Age]

但以后会比较难吃。

【讨论】:

    【解决方案2】:

    编辑后,很明显 OP 有兴趣以 CSV 格式序列化,所以我可以建议尝试CsvMapper

    var csv = new CsvWriter( textWriter );
    csv.WriteRecords( list );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      • 2022-01-02
      • 2021-04-05
      • 2021-12-18
      • 2010-09-15
      • 2011-04-09
      • 1970-01-01
      相关资源
      最近更新 更多