【发布时间】:2017-06-10 04:47:21
【问题描述】:
我有 2 个文本文件,我想读取这些文件并确定 file1 中的任何行是否存在于 file2 中。
file1 中的每一行都包含 file2 中的信息的子集(file2 中的每一行都比 file1 更完整)。例如,file1 的行有列 (x,y,z),file2 的行有列(x,y,z,w)。
我想读取 file1 并且对于 file2 中也存在的任何 file1 行,我想保存 file2(x,y,z,w) 的那一行
我写了这段代码,但这没有给我任何答案:
var f1Lines = File.ReadAllLines(@"D:\test1.txt");
var f2LineInf1 = File.ReadLines(@"D:\test2.txt")
.Where(line => f1Lines.Contains(line))
.Select(line => line).ToList();
File.WriteAllLines(@"D:\result.txt", f2LineInf1);
我的文件很大(600 万条记录),我希望在最短的时间内得到结果。
一行文字1:
memberID productID Date Rating
A1004AX2J2HXGL B0007RT9LC May 30, 2005 3
一行text2有上面的列+标题和正文。
【问题讨论】:
-
速度是相对的,超过 1200 万行的平面文件几乎不会“很快”
-
@AustinFrench 好的。我的第一个问题是这段代码没有给我任何答案。
-
Where无法给您答案,因为 text2 中的line有更多文字。你应该做一个字符串比较。你能从每个文件中发布一些示例文本吗? -
根据您的问题陈述,test1.txt 中的行包含 test2.txt 中的行的子集。如果是这样,那么
f1Lines.Contains(line)的声明永远不会是真的
标签: c# text-files