将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>>
.
我有一个这样的 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>>
.