c# - 无法解析构造函数 'CsvReader(string)'

标签 c# csv

我正在尝试编写一个程序,将 CSV 文件加载到我创建的自定义类中。为此,我使用了以下库:http://joshclose.github.io/CsvHelper/#mapping

我已经编写了我的实体类,如下所示:

public class BreakthroughCampaignEntity
{
    public string ConstituentId { get; set; }
    public string F2F { get; set; }
    public string GiftStatus { get; set; }
    public string Title1 { get; set; }
    public string FirstName { get; set; }
    public string Surname { get; set; }
    public string PreferredAddress { get; set; }
    public string PreferredSuburb { get; set; }
    public string PreferredEmailNumber { get; set; }
    public string PreferrredHomeNumber { get; set; }
    public string PreferredWorkNumber { get; set; }
    public string PreferrredMobileNumber { get; set; }
    public string GiftAmount { get; set; }
    public DateTime GiftNextTransactionDueDate { get; set; }
    public DateTime GiftSpecificAttributesPledgeGiftSignUpDate { get; set; }
}

还有我的索引映射:

public class BreakthroughCampaignIndexMap : CsvClassMap<BreakthroughCampaignEntity>
{
    /// <summary>
    /// Creates a map by matching the CSV indexes to our entity class
    /// </summary>
    public override void CreateMap()
    {
        Map(m => m.ConstituentId).Index(0).Default("Unknown");
        Map(m => m.F2F).Index(1).Default("Unknown");
        Map(m => m.GiftStatus).Index(2).Default("Unknown");
        Map(m => m.Title1).Index(3).Default("Unknown");
        Map(m => m.FirstName).Index(4).Default("Unknown");
        Map(m => m.Surname).Index(5).Default("Unknown");
        Map(m => m.PreferredAddress).Index(6).Default("Unknown");
        Map(m => m.PreferredSuburb).Index(7).Default("Unknown");
        Map(m => m.PreferredEmailNumber).Index(8).Default("Unknown");
        Map(m => m.PreferrredHomeNumber).Index(9).Default("Unknown");
        Map(m => m.PreferredWorkNumber).Index(10).Default("Unknown");
        Map(m => m.PreferrredMobileNumber).Index(11).Default("Unknown");
        Map(m => m.GiftAmount).Index(12).Default("Unknown");
        Map(m => m.GiftNextTransactionDueDate).Index(13);
        Map(m => m.GiftSpecificAttributesPledgeGiftSignUpDate).Index(14);
    }
}

我还通过包管理器控制台安装了 CSV 帮助程序库,以确保我拥有最新版本。

不幸的是,当我使用以下内容加载我的 CSV 时:

var csv = new CsvReader(TextFileToProcess.Text.ToString());

var processedFile = csv.GetRecords<BreakthroughCampaignEntity>();

this 中所引用StackExchange 帖子(Josh Close 的回答)我在 TextFileToProcess.Text.ToString() 下方收到以下错误:

Cannot resolve constructor 'CsvReader(string)', candidates are: CsvReader(CsvHelper.ICsvParser) (in class CsvReader) CsvReader(System.IO.TextReader) (in class CsvReader)

我也尝试过使用:

var csv = new CsvReader(File.OpenRead(TextFileToProcess.Text.ToString()));

它提供了相同的错误。

我很想了解这意味着什么,而不仅仅是如何解决它!我的知识有一些差距,这意味着虽然这个错误似乎表明如何解决问题,但我不明白它在告诉我什么。

最佳答案

错误消息意味着 CsvReader 没有将 csv 文本作为参数的构造函数。然后,该错误会告诉您哪些构造函数可以帮助您找出正确的构造函数。

这个采用了 ICsvParser 的一个实例:

CsvReader(CsvHelper.ICsvParser) (in class CsvReader)

这可能是您的最佳选择,需要一个 TextReader

CsvReader(System.IO.TextReader) (in class CsvReader)

如果你有文件名,你可以这样做:

new CsvReader(File.OpenText(filePath));

如果您只有 csv 文本,您可以创建一个 StringReader:

new CsvReader(StringReader(TextFileToProcess.Text.ToString()));

关于c# - 无法解析构造函数 'CsvReader(string)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20207699/

相关文章:

c# - C# using 语句中的表达式

c# - .NET 4.0 协方差

将 int** 数组转换为不同大小/组成的 char** 数组

sql-server - 将 .xlsx 文件保存为 .csv 文件的 SSIS 进程

c# - 在 C# 中打印某些内容时,如何修复从页面溢出的文本

c# - 如何实现自己的锁定机制

c# - 将 LinqToSql 表绑定(bind)到 Repeater

python - LabelMe XML 到 CSV

python - 提取从 CSV 排序的两列

excel - 将 CSV 直接导入 ListObject