我有 2 个文本文件,我想读取这些文件并确定文件 2 中是否存在文件 1 中的任何行。
file1 中的每一行包含 file2 中行信息的子集(file2 中的每一行都比 file1 更完整)。例如,file1 的行有列 (x,y,z),file2 的行有列 (x,y,z,w)。
我想读取 file1,对于 file1 中也存在于 file2 中的任何行,我想保存 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 有上面的列 + 标题和正文。
最佳答案
您编写的代码正在检查 f1Lines
中是否有任何行以 f2LineInf1
中的当前行开头。因为我们知道第一个文件中的每一行都包含第二个文件中行的子集,所以这永远不会成立。
我们真正想做的是,对于第二个文件中的每一行,查看第一个文件中是否有任何行与第二个文件行的开头匹配。
这可以通过以下方式完成:
var f1Lines = File.ReadAllLines(@"f:\public\temp\temp1.txt");
var f2LineInf1 = File.ReadLines(@"f:\public\temp\temp2.txt")
.Where(line => f1Lines.Any(line.StartsWith));
File.WriteAllLines(@"f:\public\temp\result.txt", f2LineInf1);
关于c# - 如何在另一个文本文件中搜索文本文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44464917/