Csharp/C#教程:CsvHelper ConvertUsing不改变输出分享


CsvHelper ConvertUsing不改变输出

我正在尝试使用CsvHelper库的ConvertUsing方法(v 2.4.0)。

我已经阅读了有关ConvertUsing的文档但无法使其工作。

我正在使用一个简单的类:

 public class Test { public long Id { get; set; } public string Title { get; set; } } 

使用此ClassMap

 public class TestClassMap : CsvClassMap { public override void CreateMap() { Map(m => m.Id).Name("id").ConvertUsing(row => 11111); Map(m => m.Title).Name("title").ConvertUsing(row => row.GetField("title") + " 123"); } } 

我使用这些代码创建了一个类的实例,然后将其写入CSV:

 var test = new Test() { Id = 99, Title = "Test title" }; using (var streamWriter = new StreamWriter("test.csv")) { var csv = new CsvWriter(streamWriter); csv.Configuration.RegisterClassMap(); csv.WriteRecord(test); } 

但是输出文件test.csv始终采用以下格式:

 id,title 99,Test title 

我正在寻找的输出是:

 id,title 11111,Test title 123 

ConvertUsing正在被忽略。 我试过只转换Id ,只有Title ,但这也不起作用。

我出错的任何想法?

目前ConvertUsing仅在阅读时使用。

如果要自定义输出,可以使用自定义类型转换器。 您还可以通过类型转换器选项获得一些有限的能力。

我有类似的需求,这是我在将内容保存到csv文件之前修改内容所做的。

我有一个名为StringNormalizer的自定义类,它实现了CsvHelper.TypeConversion.ITypeConverter接口。

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using CsvHelper.TypeConversion; namespace MyNamespaceInHere { public class StringNormalizer : ITypeConverter { public bool CanConvertFrom(Type type) { if (type == typeof(string)) return true; return false; } public bool CanConvertTo(Type type) { if (type == typeof(string)) return true; return false; } public object ConvertFromString(TypeConverterOptions options, string text) { return normalize(text); } public string ConvertToString(TypeConverterOptions options, object value) { if (value == null) return string.Empty; if (value.GetType() == typeof(string)) { string str = (string)value; return normalize(str); } return string.Empty; } public string normalize(string field) { // Do stuff in here and return normalized string return field + " just a sample"; } } } 

然后在我已定义映射的主程序中,我就像这样使用它

 public sealed class ConMap : CsvClassMap { public override void CreateMap() { Map(m => m.FirstName).Name("FirstName").TypeConverter(); } } 

因此保存到csv的所有内容都是“运行”我的字符串规范化程序。

上述就是C#学习教程:CsvHelper ConvertUsing不改变输出分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/996890.html

(0)
上一篇 2021年12月25日
下一篇 2021年12月25日

精彩推荐