[英]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.