代码之家  ›  专栏  ›  技术社区  ›  Mukil Deepthi

c#csvhelper写入复杂数据

  •  1
  • Mukil Deepthi  · 技术社区  · 6 年前

    public class ClusterData
    {
        public IEnumerable<string> FileName { get; set; }
    
        public int? ClusterNumber { get; set; }
    
        public string TopTerm { get; set; }
    }
    
    
        using (var writer = new StreamWriter(@"C:\Clean.csv"))
        {
            var csv = new CsvWriter(writer);
            csv.WriteHeader<ClusterData>();
            foreach (var item in dataToCsv)
            {
                foreach (var filename in item.FileName)
                {
                    csv.WriteField(filename);
                    csv.WriteField(item.ClusterNumber);
                    csv.WriteField(item.TopTerm);
                    csv.NextRecord();
                }
            }
            writer.Flush();
        }
    

    如何实现这一点?我希望外部循环重复一次,内部循环重复文件名中的每一项。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nkosi    6 年前

    using (var writer = new StreamWriter(@"C:\Clean.csv")) {
        var data = new List<ClusterData>();
    
        //...assuming data is poulated
    
        var dataToCsv = data.SelectMany(item => item.FileName.Select(filename => new {
            FileName = filename,
            ClusterNumber = item.ClusterNumber,
            TopTerm = item.TopTerm
        }));
    
        var csv = new CsvWriter(writer);
        csv.WriteRecords(dataToCsv);
    }
    

    CsvWriter