Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# CsvHealper-如何忽略csv中的空列_C#_.net_Csvhelper - Fatal编程技术网

C# CsvHealper-如何忽略csv中的空列

C# CsvHealper-如何忽略csv中的空列,c#,.net,csvhelper,C#,.net,Csvhelper,csvHelper的新成员。我想从csv文件中删除空列。 我正在使用CsvWriter将csv行定义类写入流 这是我的密码: var records = getRecords(); // list of row definition items var stream = new MemoryStream(); var writer = new StreamWriter(stream); using (var csv = new CsvWriter(writer)) { csv.Write

csvHelper的新成员。我想从csv文件中删除空列。 我正在使用CsvWriter将csv行定义类写入流

这是我的密码:

var records = getRecords(); // list of row definition items
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
using (var csv = new CsvWriter(writer))
{
    csv.WriteRecords(records);
    writer.Flush();
    return stream;
}
有没有办法让CsvWriter忽略空列?可能是配置?

actual csv: 

First Name | Middle Name| Last Name |Gender
FName1     |            | LName1    | Male
FName2     |            | LName2    | Female
FName3     |            | LName3    | 


expected csv:

First Name | Last Name |Gender
FName1     | LName1    | Male
FName2     | LName2    | Female
FName3     | LName3    | 


将记录投影到不具有中间名称属性的对象列表中。类似这样的内容(使用linq)

var projectedRecords=记录。选择(r=>newpersondto
{
FirstName=r.FirstName,
LastName=r.LastName,
性别
}).ToList();

然后将projectedRecords传递给csvWriter

可以使用配置来完成此操作

publicstaticvoidmain(字符串[]args)
{
var记录=新列表
{
新Foo{FirstName=“FName1”,LastName=“LName1”,Gender=“Male”},
新Foo{FirstName=“FName2”,LastName=“LName2”,Gender=“Female”},
新Foo{FirstName=“FName3”,LastName=“LName3”},
};
使用(var csv=new CsvWriter(Console.Out))
{
var map=newfoomap();
var properties=typeof(Foo).GetProperties();
foreach(属性中的var属性)
{
if(records.All(foo=>property.GetValue(foo)==null))
{
map.map(typeof(Foo),property.Ignore();
}
}
csv.Configuration.RegisterClassMap(地图);
csv.书面记录(记录);
}
Console.ReadKey();
}
公开课Foo
{
公共字符串名{get;set;}
公共字符串MiddleName{get;set;}
公共字符串LastName{get;set;}
公共字符串{get;set;}
}
公共类FooMap:ClassMap
{
公共地图()
{
Map(m=>m.FirstName).Name(“FirstName”);
Map(m=>m.MiddleName).Name(“中间名”);
Map(m=>m.LastName).Name(“LastName”);
Map(m=>m.Gender);
}
}
如果不想创建单独的类映射,只需将
FooMap
替换为
DefaultClassMap
并使用
AutoMap

var-map=newdefaultclassmap();
map.AutoMap();

您是说记录列表中的所有对象都有一个始终为空的中间名属性吗?