我有一个很大的文件(> 1GB),它是用管道分隔的。我想使用 file.readlines 查询文件,分割每一行,根据索引列表从分割的行中选择特定元素(我将提供索引数组)并将其返回到自定义类型类对象的字典。
目前我有这个:
strIndexes = "1,3,5,7";
var selected = strIndexes.Split(',')
.Select(x => int.Parse(x))
.Select(index => File.readlines(myFile)
.Select(x => split('|')[index]).toArray();
但是,此查询由索引引导,效率不高。它返回 4 个向量,每个向量对应上例中指定的 4 个索引。
我将不胜感激任何帮助。
更新:
谢谢大家的评论。我正在添加一些示例数据。文件数据如下所示:
Line1: aa|ab|de|gt|hj|de|fr|gt|hy // Header
Line2: sd|12|f4|tr|hj|df|ds|e3|12
Line3: 34|fd|3d|35|df|45|dq|32|dd
.
.
.
Line N 34|df|f3|df|33|s2|23|df|44
N = 数百万行。数据格式仅用于示例目的,每个单元格包含不同长度和结构的字符串。
现在,用户以标题列名称的形式输入他想要的请求数据,例如:ab,de,fr,hy,我解析并理解我需要列 2,3,7 和 9。现在我想解析文件并返回一个对象,其中每个条目都是一个字典条目,它表示一行中的数据,其中包含一个键(它是列数据之一)和一个值,它是标记化数据的 string[]。
因此,假设对于此示例,我希望数据按第 7 列排序,因此最终的 dict 将是:
[ds]->[12,f4,12]
[dq]->[fd,3d,dd]
.
.
.
[23]->[df,f3,44]