【问题标题】:combine csv headers into new one将 csv 标头合并为新标头
【发布时间】:2020-04-19 21:05:37
【问题描述】:

我正在使用CSVHelper 库来解析 CSV 文件,但我必须将两列映射到一个包含每个列的数据的列:例如 {name}: {firstName} {lastName}

有没有办法做到这一点?

谢谢

【问题讨论】:

  • 在您的支持类中,具有FirstNameLastName 的读写属性,但也具有类似于public string Name => $"{FirstName} {LastName}"; 的只读属性

标签: c# csvhelper


【解决方案1】:

这是否符合您的要求?

public class Program
{
    public static void Main(string[] args)
    {
        using (MemoryStream stream = new MemoryStream())
        using (StreamWriter writer = new StreamWriter(stream))
        using (StreamReader reader = new StreamReader(stream))
        using (CsvReader csv = new CsvReader(reader, CultureInfo.InvariantCulture))
        {
            writer.WriteLine("Id,FirstName,LastName");
            writer.WriteLine("1,Bob,Barker");
            writer.WriteLine("2,Davey,Jones");
            writer.Flush();
            stream.Position = 0;

            csv.Configuration.RegisterClassMap<FooClassMap>();

            var records = csv.GetRecords<Foo>().ToList();
        }
    }
}

public class FooClassMap : ClassMap<Foo>
{
    public FooClassMap()
    {
        Map(m => m.Id);
        Map(m => m.Name).ConvertUsing(row => row.GetField("FirstName") + " " + row.GetField("LastName"));
    }
}

public class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多