如何将特定列值转换为小写

How to convert specific column values to lowercase

我正在尝试弄清楚 CsvHelper 在读取文件时是否可以操作 CSV 中的特定列值。

例如,根据下面的设置,我希望收到的电子邮件值始终为小写:

public class MyCsvEntity : ICsvEntity
{
    public string Email { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string DirectManager { get; set; }
    public Dictionary<string, string> DynamicColumns { get; set; }
}

映射:

public sealed class MyCsvMap : ClassMap<MyCsvEntity>
{
    public MyCsvMap()
    {
        Map(m => m.Email).Name("Email");
        Map(m => m.FirstName).Name("First Name");
        Map(m => m.LastName).Name("Last Name");
        Map(m => m.DirectManager).Name("Direct Manager");
    }
}

我试图查找文档并寻找任何可以帮助我完成此操作的内置配置,但无济于事。目前,我正在读取 .csv 文件中的数据,并在其他地方执行 ToLower() 。如果有人知道如何使用 CsvHelper 完成此操作或提供任何见解,非常感谢。

我认为您应该能够在 Map 上使用 Convert 方法来实现此目的:

public sealed class MyCsvMap : ClassMap<MyCsvEntity>
{
    public MyCsvMap()
    {
        Map(m => m.Email).Name("Email").Convert(row => row.GetField("Email").ToLower());
        Map(m => m.FirstName).Name("First Name");
        Map(m => m.LastName).Name("Last Name");
        Map(m => m.DirectManager).Name("Direct Manager");
    }
}