.net 尝试将文件转换为字典时发生System.IndexOutOfRangeException错误
在这里您可以看到代码:.net 尝试将文件转换为字典时发生System.IndexOutOfRangeException错误,.net,.net,在这里您可以看到代码: 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],
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]));
ToDictionary调用的问题是您假设所有行都不是空的。当使用空行调用Split时,将得到一个大小为零的数组
通过添加一个Where after 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]));
非常感谢。然而,出于某些原因,我仍然会继续得到相同的错误:或者甚至检查长度是否正好为2Sorry,您的解决方案确实有帮助。在我将文件更改为从中读取后,它开始正常工作。