将csv文件放入C#中的多值字典

Place csv file into multiple value dictionary in C#

我有一个这样的 csv 文件:

Name,Gender,Age ,Occupation
Joe,M,29,Doctor
Carl,M,34,Accountant
Bob,M,25,Engineer
Anna,F,32,Model

我想将此 csv 文件传递​​到字典中。字典的键将是每个人的名字,每个键将拥有 3 个不同的值,即性别、年龄和职业。我正在使用 Filehelper 读取 csv 文件。这是 csv 文件的 class:

namespace ReadCSV
{
    [DelimitedRecord(",")]
    [IgnoreFirst(1)]
    public class Orders
    {
        public String Name;

        public String Gender;

        public Int32 Age;

        public String Occupation;
    }
}

这里是主要方法:

namespace ReadCSV
{
    class Program
    {
        static void Main(string[] args)
        {
            var engine = new FileHelperEngine<Orders>();
            var records = engine.ReadFile("SampleCSV.csv");
            var dict = new Dictionary<String, dynamic>();

            foreach (var record in records)
            {
               //I need to place the csv file into the dictionary here
            }
        }
    }
}

我不确定如何将 csv 文件转换为具有多个值的字典。这样做之后,我想从字典中检索特定的键值对,例如,如果我调用:

dict["Bob"]["Age"] //ignore the syntax

应该return我25 非常感谢....

像这样填写字典:

class Program
{
    static void Main(string[] args)
    {
        var engine = new FileHelperEngine<Orders>();
        var records = engine.ReadFile("SampleCSV.csv");

        // Notice the change here. Only use dynamic if you *really* need it
        var dict = new Dictionary<String, Orders>();

        foreach (var record in records)
        {
           //either this:
           dict[record.Name] = record;

           //or this:
           dict.Add(record.Name, record);

           //(but not both!)
        }
    }
}

然后像这样参考 Bob 的年龄:

var age = dict["Bob"].Age;
//age will now be 25

你不能得到这个:

var age = dict["Bob"]["Age"];

这不是 .Net Dictionary 类型的工作方式,您做任何事情都不会改变它。如果你想要那种查找能力,你必须切换到 javascript,在你的 Orders 类型上实现一个特殊的索引器 属性,或者改变字典代码来创建一个 Dictionary<string, Dictionary<string, Object>>.