C# Dapper和CsvHelper动态忽略列

C# Dapper和CsvHelper动态忽略列,c#,dapper,csvhelper,C#,Dapper,Csvhelper,我正在使用Dapper查询一个SQL过程,我不知道返回的列。 我想用CsvHelper将结果写入CSV文件。 在运行时,我希望动态忽略一些列。 CsvHelper有一个只接受预定义类的映射配置 var records = sqlCon.Query(sqlProcedure); //dynamic columns using (var writer = new StreamWriter(@"file.csv")) using (var csv = new CsvWriter(

我正在使用Dapper查询一个SQL过程,我不知道返回的列。 我想用CsvHelper将结果写入CSV文件。 在运行时,我希望动态忽略一些列。 CsvHelper有一个只接受预定义类的映射配置

var records = sqlCon.Query(sqlProcedure); //dynamic columns

using (var writer = new StreamWriter(@"file.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    var map = new CsvHelper.Configuration.DefaultClassMap<dynamic>();
...
    csv.Context.RegisterClassMap(map);
    csv.WriteRecords(records);
}
var records=sqlCon.Query(sqlProcedure)//动态列
使用(var writer=newstreamwriter(@“file.csv”))
使用(var csv=new CsvWriter(writer,CultureInfo.InvariantCulture))
{
var map=new CsvHelper.Configuration.DefaultClassMap();
...
csv.Context.RegisterClassMap(地图);
csv.书面记录(记录);
}

我想不出一种使用映射的方法。可以手动写出它们并忽略某些列

void Main()
{
动态对象J1=新的ExpandooObject();
obj1.Id=1;
obj1.Name=“票据”;
obj1.IgnoreProperty=“请忽略我”;
动态对象J2=新的ExpandooObject();
obj2.Id=2;
obj2.Name=“布伦达”;
obj2.IgnoreProperty=“请也忽略我”;
var记录=新列表
{
obj1,
obj2
};
//使用(var writer=newstreamwriter(“path\\to\\file.csv”))
使用(var csv=new CsvWriter(Console.Out,CultureInfo.InvariantCulture))
{       
var recordDictionary=(IDictionary)records.First();
var属性=recordDictionary.Keys;
foreach(属性中的var属性)
{
如果(属性!=“IgnoreProperty”)
{
csv.WriteField(属性);
}               
}
csv.NextRecord();
foreach(记录中的var记录)
{
变量扩展=(IDictionary)记录;
foreach(属性中的var属性)
{
如果(属性!=“IgnoreProperty”)
{
csv.WriteField(扩展的[property]);
}
}
csv.NextRecord();
}       
}
}

CsvHelper可以直接编写动态对象:。不应该需要类映射。