0

我正在尝试从此文件(indexes.csv)中获取信息:

在此处输入图像描述

进入这个类的一个实例:

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 文件执行此操作?

编辑

区域的示例是字符串值,例如“Dalton”

4

2 回答 2

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();
            }
        }
    }
}
于 2013-03-28T21:00:31.063 回答
0

首先,您将阅读标题并获取包含您所在区域的列的索引。然后你必须读取每一行并用','分割行,然后读取索引以获得你的值。您还可以通过搜索拆分记录的第一个索引将 yr\qrt 应用于它。

于 2013-03-28T20:53:41.837 回答