Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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# 替换CSV导出中的值_C#_Asp.net Mvc 3_Entity Framework_Csv - Fatal编程技术网

C# 替换CSV导出中的值

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

我正在使用NuGet的CSVHelper组件。我已成功导出所有数据。但是,我有几个布尔类型的字段,并在csv文件中返回“true”/“false”。我的项目要求我输出“1”或“0”,而不是“真”/“假”。最简单的方法是什么

    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(..这里的参数名称…{}