【发布时间】:2017-12-03 08:39:09
【问题描述】:
我正在构建一个程序。 它使用以下格式 {Index:Value} 存储在文本文件中的数据。示例:
1:10,86;
2:11,65;
3:13,32;
4:13,53;
5:13,93;
...
1500:1565,99;
每个文件大约有 1490-1500 行。
我需要在字典中读取这些文件,并通过不同的函数将其索引作为整数访问,将值作为双精度数访问。比如:
Data.ByIndex((integer) 3) - returns (double) 13,32
现在按值获取索引会有点棘手:
Data.ByClosestValue((double) 12,0) - returns (integer) 2
Data.ByClosestValue((double) 13) - returns (integer) 3
Data.ByClosestLower((double) 13,5) - returns (integer) 3
Data.ByClosestHigher((double) 13,5) - returns (integer) 5
有几个关键时刻:
- 它必须非常快。通常会同时读取 10-15 个数据文件,每个文件会多次访问字典。
- 尽可能不使用 LINQ。
现在我选择了以下内容:
- File.ReadAllText() 方法对我来说似乎是最快的。
- 使用 Split(';') 和 Split(':') 获取条目。
-
Dictionary <string, string>。我使用字符串类型的原因是,如果使用 Split() 函数从文本数据中读取会更快。
最佳解决方案是什么?
更新:大多数人会建议将数据存储在数据库中,我同意这是最好的解决方案,但不幸的是我无法控制这些数据文件。这些数据文件是在另一个程序中形成的,并且有一个严格的要求,它必须可以由人类通过记事本或其他方式进行编辑。
【问题讨论】:
-
您是否有不想使用数据库的原因?
-
你能详细说明你为什么不想使用 linq 吗?
-
1.数据库不是一个选项,因为数据文件是在不同的应用程序中形成的。
-
2.我不想使用 LINQ 的原因是因为我需要我的程序在 .NET 2.0 上运行。
-
如果你总是想用值计算,不要存储字符串,拆分和解析一次,然后将它作为正确的类型存储在字典中。
标签: c# visual-studio dictionary