将txt文件转换为字典<string,string =“”> </string,>

时间:2013-06-02 17:36:08

标签: c# file dictionary

我有一个文本文件,我需要将所有偶数行放到Dictionary Key和所有偶数行到Dictionary Value。什么是我的问题的最佳解决方案?

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 个答案:

答案 0 :(得分:7)

试试这个:

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);

我们的想法是成对分组所有行。每个组将只有两个项目 - 作为第一项的键,以及作为第二项的值。

Demo on ideone

答案 1 :(得分:2)

你可能想这样做:

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

分别以两步而不是每一行的形式读取文件。

我想你想要使用这些对:(2,1)(4,3),....如果没有,请更改此代码以满足您的需求。

答案 2 :(得分:1)

您可以逐行阅读并添加到词典

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

通过这种方式,您将获得一个字典,如果您有奇数行,则最后一个条目将具有空值。

答案 3 :(得分:0)

  String fileName = @"c:\MyFile.txt";
  Dictionary<string, string> stroka = new Dictionary<string, string>();

  using (TextReader reader = new StreamReader(fileName)) {
    String key = null;
    Boolean isValue = false;

    while (reader.Peek() >= 0) {
      if (isValue)
        stroka.Add(key, reader.ReadLine());
      else
        key = reader.ReadLine();

      isValue = !isValue;
    }
  }