首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >csvhelper IsHeaderCaseSensitive工作

csvhelper IsHeaderCaseSensitive工作
EN

Stack Overflow用户
提问于 2014-06-24 16:18:27
回答 1查看 680关注 0票数 0

我试图读取一个csv文件的头‘电子邮件’,然而,我不断得到CsvMissingFieldException抛出的“字段的电子邮件‘不存在于CSV文件”。

我设置了CSVreader来处理-

代码语言:javascript
复制
csvReader.Configuration.IsHeaderCaseSensitive = false;

但我还是遇到了同样的问题。有人知道附近有什么工作吗?或者为什么配置不能工作?

在我的实用程序类中:

代码语言:javascript
复制
public static IEnumerable<T> CSVreader<T>(string fileName)
        {
            using (var fileReader = File.OpenText(fileName))
            using (var csvReader = new CsvHelper.CsvReader(fileReader))
            { 
                csvReader.Configuration.IsHeaderCaseSensitive = false;
                csvReader.Configuration.RegisterClassMap<OptOutClassMap>();

                while (csvReader.Read())
                {
                    var record = csvReader.GetRecord<T>();
                    yield return record;
                }
            }
        }

在我的类Map类中:

代码语言:javascript
复制
public string Email { get; set; }

public class CustomClassMap : CsvHelper.Configuration.CsvClassMap<CustomMap>
    {
        public override void CreateMap()
        {
            Map(m => m.Email);  
        }

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 18:44:11

看起来您没有使用正确的ClassMap。从上面的代码中,行:

代码语言:javascript
复制
csvReader.Configuration.RegisterClassMap<OptOutClassMap>();

应:

代码语言:javascript
复制
csvReader.Configuration.RegisterClassMap<CustomClassMap>();

修改后的代码按预期工作。

代码语言:javascript
复制
static void Main(string[] args)
{
    var records = CSVreader<Record>("TextFile1.csv");            
}

public class Record
{
    public string Email { get; set; }
}

public class CustomClassMap : CsvHelper.Configuration.CsvClassMap<Record>
{
    public override void CreateMap()
    {
        Map(m => m.Email);
    }

}

public static IEnumerable<T> CSVreader<T>(string fileName)
{
    using (var fileReader = File.OpenText(fileName))
    using (var csvReader = new CsvHelper.CsvReader(fileReader))
    { 
        csvReader.Configuration.IsHeaderCaseSensitive = false;
        csvReader.Configuration.RegisterClassMap<CustomClassMap>();

        while (csvReader.Read())
        {
            var record = csvReader.GetRecord<T>();
            yield return record;
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24391612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档