我具有以下对象结构,并尝试使用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();
}
该如何实现?我希望对文件名中的每个项目重复一次外循环,并重复一次内循环。
谢谢
答案 0 :(得分:1)
提取所需的数据,然后使用编写器将其发送到文件
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