Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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读取带有可选列的CSV_C#_Csvhelper - Fatal编程技术网

C# 使用CsvHelper读取带有可选列的CSV

C# 使用CsvHelper读取带有可选列的CSV,c#,csvhelper,C#,Csvhelper,我想读取一个有一些可选列的CSV文件,因为我已经使用“?”定义了一个具有可选属性的类,但无法使其工作 公共类MyItem { 公共int Id{get;set;} 公共int?MyValue{get;set;} } 映射类: 公共密封类MyItemMap:ClassMap { 公共MyItemMap() { Map(m=>m.Id); Map(m=>m.MyValue); } } 然后是一个控制台应用程序: static void Main(字符串[]args) { 使用(var reade

我想读取一个有一些可选列的CSV文件,因为我已经使用“?”定义了一个具有可选属性的类,但无法使其工作

公共类MyItem
{
公共int Id{get;set;}
公共int?MyValue{get;set;}
}
映射类:

公共密封类MyItemMap:ClassMap
{
公共MyItemMap()
{
Map(m=>m.Id);
Map(m=>m.MyValue);
}
}
然后是一个控制台应用程序:

static void Main(字符串[]args)
{
使用(var reader=new StreamReader(@“C:\Test2Delete\ConsoleAppCSV\MyItem.csv”))
使用(var csv=新的CsvReader(读卡器))
{
RegisterClassMap(新的MyItemMap());
csv.Configuration.HeaderValidated=null;
尝试
{
var records=csv.GetRecords();
foreach(记录中的var r)
{
Console.WriteLine(r.Id+“”+r.MyValue);
}
Console.ReadLine();
}
捕获(例外e)
{
控制台写入线(e.Message);
Console.ReadLine();
}
}
}
}

因此,我希望能够读取包含“Id”、“MyValue”列的文件,以及仅包含“Id”列的文件。如何实现这一点?

MyValue
设置为可选

公共密封类MyItemMap:ClassMap
{
公共MyItemMap()
{
Map(m=>m.Id);
Map(m=>m.MyValue).Optional();
}
}

请添加一个语言标记,这样它不仅是您正在使用的库,而且是所涉及的语言。