CSVHelper 使用 object 属性 值写入 header
CSVHelper write header using object property value
我有一个这样的列表:
List<ValueModel> list = new List<ValueModel>();
for(var i = 1; i <= 3;i++)
{
lista.Add(new ValueModel
{
Name = string.Format("Header {0}",i),
Value = string.Format("Value of Header {0}", i),
});
}
我如何使用 CSVHelper 写入 csv 以便输出像这样(使用 属性 的值):
Header1,Header2,Header3
Value of Header1,Value of Header2,Value of Header3
我假设您指的是 this CsvHelper library here。如果不是,请在您的问题中澄清这一点。
要实现你的输出,你可以使用这样的东西:
var data = new List<ValueModel>(0);
data.Add(new ValueModel { Name= "Stack", Surname= "Overflow", Users = "1M" });
data.Add(new ValueModel { Name= "Stack", Surname= "ServerFault", Users = "0.5M" });
using (StreamWriter sw = new StreamWriter(@"C:\Temp\out.csv"))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<ValueModel>();
foreach (ValueModel rec in data)
{
cw.WriteRecord<ValueModel>(rec);
}
}
输出将如下所示:
Name,Surname,Users
Stack,Overflow,1M
Stack,ServerFault,0.5M
我建议使用 属性 描述的定义属性 here 以便您可以在 c# 中保留命名约定并轻松添加用户友好的 属性 名称。
更新(根据初始评论):
下面的代码将生成所需的输出。
var data = new List<ValueModel>(0);
using (StreamWriter sw = new StreamWriter(@"C:\Temp\out.csv"))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteRecord(data.Select(x => x.Name).ToArray());
cw.WriteRecord(data.Select(x => x.Value).ToArray());
}
当然,每个案例都是独一无二的,但如果您的对象是{ Name;,我建议您考虑使用字典。值}.
我有一个这样的列表:
List<ValueModel> list = new List<ValueModel>();
for(var i = 1; i <= 3;i++)
{
lista.Add(new ValueModel
{
Name = string.Format("Header {0}",i),
Value = string.Format("Value of Header {0}", i),
});
}
我如何使用 CSVHelper 写入 csv 以便输出像这样(使用 属性 的值):
Header1,Header2,Header3
Value of Header1,Value of Header2,Value of Header3
我假设您指的是 this CsvHelper library here。如果不是,请在您的问题中澄清这一点。
要实现你的输出,你可以使用这样的东西:
var data = new List<ValueModel>(0);
data.Add(new ValueModel { Name= "Stack", Surname= "Overflow", Users = "1M" });
data.Add(new ValueModel { Name= "Stack", Surname= "ServerFault", Users = "0.5M" });
using (StreamWriter sw = new StreamWriter(@"C:\Temp\out.csv"))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<ValueModel>();
foreach (ValueModel rec in data)
{
cw.WriteRecord<ValueModel>(rec);
}
}
输出将如下所示:
Name,Surname,Users
Stack,Overflow,1M
Stack,ServerFault,0.5M
我建议使用 属性 描述的定义属性 here 以便您可以在 c# 中保留命名约定并轻松添加用户友好的 属性 名称。
更新(根据初始评论):
下面的代码将生成所需的输出。
var data = new List<ValueModel>(0);
using (StreamWriter sw = new StreamWriter(@"C:\Temp\out.csv"))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteRecord(data.Select(x => x.Name).ToArray());
cw.WriteRecord(data.Select(x => x.Value).ToArray());
}
当然,每个案例都是独一无二的,但如果您的对象是{ Name;,我建议您考虑使用字典。值}.