我正在尝试读取具有以下格式的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)
这给了我一个设置列表,但是,我想要做的是将其读入字典.我的问题是,有没有办法在不迭代整个数组并手动填充字典的情况下执行此操作?
好吧,你可以使用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)
迭代有什么问题?
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)