0

.csv ファイルからデータを読み取り、ヘッダーとコンテンツをオブジェクトに次の形式で保存する必要があります。以下のクラスのリスト。

public class MappingData
{
    private string ColumnName { get; set; }
    private List<string> Data { get; set; }
}

たとえば、次のようなテーブルがあるとします。

| Name       | Phone       | City         |
|:-----------|------------:|:------------:|
| Yassser    | 32342342234 | Mumbai
| Sachin     | 32342342234 | Surat    
| Will       | 32342342234 | London

したがって、上記のデータの場合、クラスには 3 つのオブジェクトが必要です。最初のオブジェクトには次の詳細が含まれます。

ColumnName : '名前' Data: ['ヤセル', 'サチン', '意志']

だから、これが私がやろうとしていることです。以下は私が始めたものです。ストリームリーダーを使用してファイルを読み取り、各行をコンマ区切りで分割しています。

private List<MappingData> GetData(string filename)
{
    var data = new List<MappingData>();
    string fullPath = GetFilePath(filename);
    StreamReader reader = new StreamReader(fullPath);
    while (!reader.EndOfStream)
    {
        string line = reader.ReadLine();
        if (!String.IsNullOrWhiteSpace(line))
        {
            string[] values = line.Split(',');
        }
    }
    return data;
}

このデータを必要な形式に成形するのを手伝ってくれませんか。ありがとう。

4

3 に答える 3

0

メソッドの残りの部分が正しいと仮定して、これを試してください:

private List<MappingData> GetData(string filename)
{
    var raw = new List<string[]>();
    var data = new List<MappingData>();
    string fullPath = GetFilePath(filename);
    using(var reader = new StreamReader(fullPath))
    {
        while (!reader.EndOfStream)
        {
            string line = reader.ReadLine();
            if (!String.IsNullOrWhiteSpace(line))
            {
                raw.Add(line.Split(','));
            }
        }
    }

    Func<int, MappingData> extract =
        n => new MappingData()
        {
            ColumnName = raw[0][n],
            Data = raw.Skip(1).Select(x => x[n]).ToList(),
        };

    data.Add(extract(0));
    data.Add(extract(1));
    data.Add(extract(2));

    return data;
}

MappingDataただし、プロパティにアクセスできるようにする必要があります。

于 2013-09-25T10:17:54.080 に答える