2013-03-28 71 views
0

我想从这个文件(indexes.csv)得到的信息:正从一个CSV文件中的数据转换成字典

enter image description here

进入这个类的一个实例:

class Table 
{ 
    Dictionary<String, double> _regionTimeValues; 
    String _region; 

    public Table(String region) 
    { 
     _regionTimeValues = new Dictionary<string, double>(); 
     _region = region; 
     suckInValues(); 
    } 

    private void suckInValues() 
    { 
     //Go find File, get the appropriate Values for _region 
     //add each value found in the csv file that applies, indexed by yearQuarter 
     //Example: _regionTimeValues.Add("2013Q1", 1.1); 
    } 

    internal double locateRelevantValue(string yearQuarter) 
    { 
     double locatedValue = 0.0; 
     _regionTimeValues.TryGetValue(yearQuarter,out locatedValue); 
     return locatedValue; 
    } 

我想只填写特定地区的数据字典。

如何从csv文件执行此操作?

编辑

区域的一个例子是像“道尔顿”

+0

什么'region'的例子吗? –

+0

使用[this](http://stackoverflow.com/questions/5282999/c-net-reading-csv-file)作为起点,并在其基础上进行构建。 – shahkalpesh

回答

0

首先一个字符串值,你会读头,并得到包含您所在地区的列的索引。然后你将不得不阅读每行,并用','分隔行,然后阅读索引来获得你的价值。您也可以通过搜索分割记录的第一个索引来应用yr \ qrt。

2

我想你想这样的事情...

public class Table 
{ 
    private Dictionary<string, double> _regionTimeValues = new Dictionary<string, double>(); 
    private String _region; 

    public Table(String region) 
    { 
     _region = region; 
    } 

    public void AddValue(string key, double value) 
    { 
     _regionTimeValues.Add(key, value); 
    } 
} 

public class Program 
{ 
    static void Main(string[] args) 
    { 
     Dictionary<string, Table> tables = new Dictionary<string, Table>(); 

     using (var reader = new StreamReader("Data.csv")) 
     { 
      // First line contains column names. 
      var columnNames = reader.ReadLine().Split(','); 
      for(int i = 1; i < columnNames.Length; ++i) 
      { 
       var columnName = columnNames[i]; 
       tables.Add(columnName, new Table(columnName)); 
      } 

      var line = reader.ReadLine(); 
      while (line != null) 
      { 
       var columns = line.Split(','); 

       for (int i = 1; i < columns.Length; ++i) 
       { 
        var table = tables[columnNames[i]]; 
        table.AddValue(columns[0], double.Parse(columns[i])); 
       } 

       line = reader.ReadLine(); 
      } 
     } 
    } 
} 
+0

csv文件需要与可执行文件相关的地方在哪里? – jth41