2012-05-01 80 views
0

鍵值對,我有一個文件,一些關鍵的對值使用LINQ to讀取配置文件

key1 = value1 
key2 = value2 

[section name] 
key3 = value3 
key4 = value4 

,所以我不在乎節名稱作爲關鍵字是唯一的。我只想獲取輸入密鑰的值。我有以下幾行來讀取這些行。

var userDataLines = File.ReadAllLines(pathToFile); 

,我有這樣的事情

var result = userDataLines.Select(userDataLine => userDataLine.Split(new[] { '=' })) 
          .Where(split => split.Length == 2); 

給了我所有的鍵值對的一個集合。

但基本上我想從我的文件中獲得帶有鍵和值的字典,但不知道該怎麼做。任何人都可以讓我朝正確的方向發展嗎?

感謝

回答

2

有此一LINQ擴展方法:

var result = userDataLines.Select(userDataLine => userDataLine.Split(new[] { '=' })) 
          .Where(split => split.Length == 2) 
          .ToDictionary(split => split[0], split => split[1]); 
0

可以使用ToDictionary擴展方法,並告訴它什麼元素是關鍵,這是值:

var dictionary = userDataLines.Select(x => x.Split(new[] { '=' })) 
        .Where(x => x.Length == 2) 
        .ToDictionary(x => x[0], x => x[1]); 
0
var result = (from a in userDataLines 
       let pairs = a.Split('=') 
       where !string.IsNullOrEmpty(a) && !a.Trim().StartsWith("[") 
       select new { Key = pairs[0].Trim(), Value = pairs[1].Trim() }); 

我找到的LINQ更容易閱讀,我不知道該ToDictionary方法!