尝试将文件转换为字典时出现System.IndexOutOfRangeException错误

时间:2018-06-24 17:14:08

标签: .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], a => Convert.ToInt64(a[1]));

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]));