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 に答える