Question: 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++;
}

```

Answer: 
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](http://ideone.com/eqT8iU).
You can read line by line and add to a Dictionary

```
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());
        }
    }
}

```

This way you will get a dictionary, and if you have odd lines, the last entry will have a null value.