C# 替换CSV导出中的值
我正在使用NuGet的CSVHelper组件。我已成功导出所有数据。但是,我有几个布尔类型的字段,并在csv文件中返回“true”/“false”。我的项目要求我输出“1”或“0”,而不是“真”/“假”。最简单的方法是什么C# 替换CSV导出中的值,c#,asp.net-mvc-3,entity-framework,csv,C#,Asp.net Mvc 3,Entity Framework,Csv,我正在使用NuGet的CSVHelper组件。我已成功导出所有数据。但是,我有几个布尔类型的字段,并在csv文件中返回“true”/“false”。我的项目要求我输出“1”或“0”,而不是“真”/“假”。最简单的方法是什么 var AllRecords = surveyResponseRepository.Get() .Where(r => r.ProgramId == ProgramId); string uniqueID = G
var AllRecords = surveyResponseRepository.Get()
.Where(r => r.ProgramId == ProgramId);
string uniqueID = Guid.NewGuid().ToString();
var appData = Server.MapPath("~/CsvExport/" + uniqueID + ".csv");
using (var csv = new CsvWriter(new StreamWriter(appData)))
{
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.Delimiter = ',';
csv.WriteRecords(AllRecords);
}
循环遍历AllRecords中的每条记录,找到由布尔值表示的字段,并使用以下命令将其转换为整数值:
Convert.ToInt32(booleanValue);
我相信您可以继承CsvWriter并将WriteField重写为以下内容:
public override void WriteField( string field )
{
if (field.ToLower() == bool.TrueString.ToLower())
field = "1";
if (field.ToLower() == bool.FalseString.ToLower())
field = "0";
base.WriteField(field);
}
你是在类中插入这些值吗?不是,我只是在导出数据。是否最好创建一种ViewModel来调整数据?您可以在类中暂存数据,然后按照您想要的方式对其进行操作,最后将其导出。看起来很流畅,但我收到了“错误15 a成员的CMESurvey.HtmlHelpers.CsvBoolean.WriteField(字符串)”标记为覆盖无法标记为新的或虚拟的“抱歉,只需从方法signatureNow中删除virtual关键字,我就得到“Error 15'CsvHelper.CsvWriter'不包含接受0个参数的构造函数”确定,这意味着您应该为类创建一个与基类具有相同签名的构造函数。类似于下面的一个:public csvwritex(..这里的参数…):base(..这里的参数名称…{}