【问题标题】:Output Entites to csv将实体输出到 csv
【发布时间】:2018-01-23 09:53:53
【问题描述】:

我目前正在从事一个商业项目。由于我的应用程序我必须生成数据。所以我得到了一个包含其他实体以及列表等的核心实体。

其所有数据都必须发送到需要以 CSV 格式发送的合作伙伴 API。

我的问题是,应用转换的最佳解决方案是什么?

【问题讨论】:

  • 有很多重复的问题库可以轻松做到这一点。你尝试过什么吗?你遇到问题了吗?
  • CsvHelper 是一个让人想起的图书馆
  • 我遇到的问题是我使用嵌套实体。因此很难有一个清晰的愿景来匹配 CSV 格式。所以我知道有几种解决方案,但确切地说哪一种最适合这种情况
  • csvHelper 好像太死板了,我来看看高级功能
  • @CamilleColvray 在 CSV 中没有嵌套实体之类的东西。它应该是一种简单、扁平的格式。如果你认为 CsvHelper 死板,那你就错了。您文件的使用者将无法对其进行任何操作。

标签: c# csv


【解决方案1】:

你可以用这个:

 public static string ObjectToCsvData(object obj)
 {
     if (obj == null)
     {
         throw new ArgumentNullException("obj", "Value can not be null or Nothing!");
     }

     StringBuilder sb = new StringBuilder();
     Type t = obj.GetType();
     PropertyInfo[] pi = t.GetProperties();

     for (int index = 0; index < pi.Length; index++)
     {
         sb.Append(pi[index].GetValue(obj, null));

         if (index < pi.Length - 1)
         {
            sb.Append(",");
         }
     }

     return sb.ToString();
 }

【讨论】:

  • 不是我的反对意见,但 CSV 并不意味着将单个对象的属性放在带逗号的字符串中
  • 你的意思是你有嵌套对象?
  • 谢谢我会测试那个代码,但实际上,我不认为 GetProperties() 可以处理实体的嵌套
  • @CamilleColvray CSV 文件没有嵌套实体。他们没有实体。它们是由分隔符分隔的简单值。分隔符之间的任何内容都是文本
  • 是的,你不能在 CSV 文件中使用嵌套实体,因为我们不能指定属性的名称;它的唯一价值。
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2021-10-24
相关资源
最近更新 更多