c# csvhelper 写入复杂数据

c# csvhelper writing complex data

我有以下对象结构并尝试使用 csvhelper 写入 csv。但是文件名列没有被添加。

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();
    }

如何实现?我希望对文件名中的每个项目重复一次外循环和重复内循环。

谢谢

提取需要的数据,然后使用写入器将其发送到文件

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);
}

使用 linq 查询为数据中的每个文件名构造所需的对象格式。

然后数据会像通常使用 CsvWriter

一样转换为 CSV