c# - 如何在另一个文本文件中搜索文本文件中的行

标签 c# text-files

我有 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/

相关文章:

c++ - 一遍又一遍地创建相同的文本文件

php - 使用 PHP 将文本文件插入 MySQL

sql-server - 如何将文本文件导入MSSQL

c# - C# 中 ionic zip 的替代品是什么?

c# - 计算器c#中的小数点

c# - C#:专注于WPF文本框的工具提示

c# - 使用 Elasticsearch .NET 和 NEST 6.x : How to MultiGet documents from multiples indices

python - 在 python 中查找并替换文本文件

python - 如何对文本文件执行多种功能

c# - 为什么 GC.GetTotalMemory() 和 CLR Profiler 数字之间存在巨大差异?