我有一个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文件的类:
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
应该给我25
非常感谢....
答案 0 :(得分:2)
像这样填写字典:
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!)
}
}
}
然后像这样引用鲍勃的年龄:
var age = dict["Bob"].Age;
//age will now be 25
你无法得到这个:
var age = dict["Bob"]["Age"];
这不是.Net字典类型的工作原理,,你所做的一切都不会改变它。如果您需要这种查找功能,则必须切换到javascript,在Orders
类型上实现特殊的索引器属性,或更改字典代码以创建Dictionary<string, Dictionary<string, Object>>
。