问题描述
我有一个字典列表,具有相同的键列表,但值不同。有没有办法使用CSVHelper将其写入CSV文件?我在下面有示例代码,但是显然没有用。
static void Main(string[] args)
{
List<Dictionary<String,String>> records = new List<Dictionary<string,string>>();
Dictionary<String,String> data1 = new Dictionary<String,String>();
data1.Add("Name1","Value1");
data1.Add("Name2","Value2");
records.Add(data1);
Dictionary<String,String> data2 = new Dictionary<String,String>();
data2.Add("Name1","Value1");
data2.Add("Name2","Value2");
records.Add(data2);
using (var writer = new StreamWriter("e:\\temp\\test.csv"))
using (var csv = new CsvWriter(writer))
{
csv.WriteRecords(records);
//GEtting exception here
//CsvHelper.Configuration.CsvConfigurationException: 'Types that inherit IEnumerable cannot be auto mapped. Did you accidentally call GetRecord or WriteRecord which acts on a single record instead of calling GetRecords or WriteRecords which acts on a list of records?'
}
}
有什么办法解决吗?
谢谢!
解决方法
我相信唯一的方法就是手写出来。
using (var writer = new StreamWriter("e:\\temp\\test.csv"))
using (var csv = new CsvWriter(writer,CultureInfo.InvariantCulture))
{
var headings = new List<string>(records.First().Keys);
foreach (var heading in headings)
{
csv.WriteField(heading);
}
csv.NextRecord();
foreach (var item in records)
{
foreach (var heading in headings)
{
csv.WriteField(item[heading]);
}
csv.NextRecord();
}
}