Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 尝试将文件转换为字典时发生System.IndexOutOfRangeException错误_.net - Fatal编程技术网

.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,您的解决方案确实有帮助。在我将文件更改为从中读取后,它开始正常工作。