用C#读取ini文件

Pau*_*els 3 c# arrays string

我正在尝试读取具有以下格式的ini文件:

SETTING=VALUE 
SETTING2=VALUE2
Run Code Online (Sandbox Code Playgroud)

我目前有以下代码:

string cache = sr.ReadToEnd();                    
string[] splitCache = cache.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

这给了我一个设置列表,但是,我想要做的是将其读入字典.我的问题是,有没有办法在不迭代整个数组并手动填充字典的情况下执行此操作?

Jen*_*ens 7

好吧,你可以使用LINQ做

Dictionary<string, string> ini = (from entry in splitCache
                                  let key = entry.Substring(0, entry.FirstIndexOf("="))
                                  let value = entry.Substring(entry.FirstIndexOf("="))
                                  select new { key, value }).ToDictionary(e => e.key, e => e.value);
Run Code Online (Sandbox Code Playgroud)

正如Binary Worrier在评论中指出的那样,这种方式与其他答案所建议的简单循环相比没有任何优势.

编辑:上面的块的较短版本将是

Dictionary<string, string> ini = splitCache.ToDictionary(
                                   entry => entry.Substring(0, entry.FirstIndexOf("="),
                                   entry => entry.Substring(entry.FirstIndexOf("="));
Run Code Online (Sandbox Code Playgroud)


Kla*_*sen 6

迭代有什么问题?

var lines = File.ReadAllLines("pathtoyourfile.ini");
var dict = new Dictionary<string, string>();

foreach(var s in lines)
{
     var split = s.Split("=");
     dict.Add(split[0], split[1]);
}
Run Code Online (Sandbox Code Playgroud)