2012-05-01 79 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方法!