在这里您可以看到代码:
Dictionary<string, long> PhoneBook = new Dictionary<string, long>();
string[] lines = File.ReadAllLines(@"C:\phones.txt");
PhoneBook = lines.Select(l => l.Split('='))
.ToDictionary(a => a[0], a => Convert.ToInt64(a[1]));
答案 0 :(得分:1)
调用ToDictionary
的问题是您假设所有行都是非空的。用空行调用Split
时,将得到一个大小为零的数组。
通过在Where
之后添加Select
删除零长度数组来解决此问题:
var lines = File.ReadAllLines(@"C:\phones.txt");
var phoneBook = lines
.Select(l => l.Split('='))
.Where(a => a.Length >= 2)
.ToDictionary(a => a[0], a => Convert.ToInt64(a[1]));