Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用对象属性值的CSVHelper写入头_C#_.net_Csvhelper - Fatal编程技术网

C# 使用对象属性值的CSVHelper写入头

C# 使用对象属性值的CSVHelper写入头,c#,.net,csvhelper,C#,.net,Csvhelper,我有这样一份清单: List<ValueModel> list = new List<ValueModel>(); for(var i = 1; i <= 3;i++) { lista.Add(new ValueModel { Name = string.Format("Header {0}",i),

我有这样一份清单:

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

我想你指的是图书馆。如果没有,请在问题中澄清这一点

要实现输出,您可以使用以下方法:

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
我建议使用描述的属性定义属性,这样您就可以保持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());
}
var数据=新列表(0);
使用(StreamWriter sw=new StreamWriter(@“C:\Temp\out.csv”))
使用(CsvWriter cw=新CsvWriter(sw))
{
cw.WriteRecord(data.Select(x=>x.Name.ToArray());
cw.WriteRecord(data.Select(x=>x.Value.ToArray());
}

当然,每种情况都是独特的,但如果对象是{Name;Value},我建议您使用字典。

请看一下。@funie200,谢谢您回答我的问题,但我要查找的是Name属性的值将是标题,value属性的值将是行谢谢你回答了我的问题,但是我要找的是Name属性的值将是标题,value属性的值将是行。因此,在您的示例中,“Stack”将是标题,“Overflow”将是行。此外,我的值模型将只有2个属性(名称和值)
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());
}