簡體   English   中英

嘗試使用 CsvHelper 將 csv 文件內容存儲到 C# 字典時出錯

[英]Getting error when trying to store csv file contents into a C# Dictionary using CsvHelper

我想使用 C# 和 CsvHelper 庫來讀取 csv 文件並將其內容存儲到字典中。 考慮具有以下內容的 Test.csv 文件:

One,1
Two,2
Three,3
Four,4
Five,5

我需要的是將此 csv 信息放在Dictionary<string, int> ,其中鍵是第一列,值是第二列。 我試圖實現后Mapping to a Dictionary 中提出的解決方案,但我在 foreach 塊中收到 NullReferenceException ,因為沒有數據被分配到dict變量中:

using System;
using System.IO;
using System.Globalization;
using System.Collections.Generic;

using CsvHelper;

namespace TestCsvHelper
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var reader = new StreamReader("C:\\Test.csv"))
            using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                csv.Read();
                var dict = csv.GetRecord<dynamic>() as IDictionary<string, int>;

                foreach (string key in dict.Keys)
                {
                    Console.WriteLine("Key: {0}, Value: {1}", key, dict[key]);
                }
            }
        }
    }
}

有人可以幫我展示我做錯了什么嗎?

此致,

法比亞諾

如果完全轉換為Dictionary有效, csv.GetRecord只會給你一條記錄。 我嘗試使用csv.GetRecords閱讀並將其響應轉換為Dictionary 如果這是您所期望的,請檢查以下代碼:

  static void Main(string[] args)
        {
            using (var reader = new StreamReader("c:\\Test.csv"))
            using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                csv.Configuration.HasHeaderRecord = false; //since csv does not have headers
                var dict = csv.GetRecords<dynamic>().ToDictionary(lm=>lm.Field1,lm=>lm.Field2);

                foreach (var key in dict.Keys)
                {
                    Console.WriteLine("Key: {0}, Value: {1}", key, dict[key]);
                }
            }
            Console.ReadLine();
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM