0

I have a text file and I need to put all even lines to Dictionary Key and all even lines to Dictionary Value. What is the best solution to my problem?

int count_lines = 1;
Dictionary<string, string> stroka = new Dictionary<string, string>();

foreach (string line in ReadLineFromFile(readFile))
{
    if (count_lines % 2 == 0)
    {
        stroka.Add Value
    }
    else
    { 
       stroka.Add Key
    }

    count_lines++;
}
4

4 に答える 4

8

Try this:

var res = File
    .ReadLines(pathToFile)
    .Select((v, i) => new {Index = i, Value = v})
    .GroupBy(p => p.Index / 2)
    .ToDictionary(g => g.First().Value, g => g.Last().Value);

The idea is to group all lines by pairs. Each group will have exactly two items - the key as the first item, and the value as the second item.

Demo on ideone.

于 2013-06-02T17:42:21.803 に答える
2

行ごとに読んで辞書に追加できます

public void TextFileToDictionary()
{
    Dictionary<string, string> d = new Dictionary<string, string>();

    using (var sr = new StreamReader("txttodictionary.txt"))
    {
        string line = null;

        // while it reads a key
        while ((line = sr.ReadLine()) != null)
        {
            // add the key and whatever it 
            // can read next as the value
            d.Add(line, sr.ReadLine());
        }
    }
}

このようにして辞書を取得し、奇数行がある場合、最後のエントリには null 値が含まれます。

于 2013-06-02T18:06:33.580 に答える
2

You probably want to do this:

var array = File.ReadAllLines(filename);
for(var i = 0; i < array.Length; i += 2)
{
    stroka.Add(array[i + 1], array[i]);
}

This reads the file in steps of two instead of every line separately.

I suppose you wanted to use these pairs: (2,1), (4,3), ... . If not, please change this code to suit your needs.

于 2013-06-02T17:40:26.037 に答える