比较2个文本文件,并导出文件1中不存在的行

时间:2017-05-03 19:15:44

标签: c# text

基本上我需要做的是:

File no.1:
1
2    
4    
5    
51    
21

File no.2:
31
21
4

What should be exported:
1
2
5
51

基本上只导出第二个文本中不存在的行。

我目前的尝试:

bool exists = false;
string[] lines1 = File.ReadAllLines("path1");
string[] lines2 = File.ReadAllLines("path2");

for (int i = 0; i < lines1.Length; i++)
{
    for (int g = 0; g < lines2.Length; g++)
    {
        if (lines1[i] == lines2[g])
        {
            exists = true;
            Console.WriteLine("Exists!");
            break;
        }                   
    }
    if (!exists)
    {
        Console.WriteLine(lines1[i]);
        exists = false;
    }
}
Console.WriteLine("End of file reached");
Console.ReadLine();

我觉得有一个适合我的功能,虽然这是我想出来的,谢谢你的帮助!

2 个答案:

答案 0 :(得分:4)

根据您想要的结果,您可以使用LINQ和Except扩展方法。像这样:

link.select("h2 ~ p").get(0).text(); // returns "content"
link.select("h2 ~ p").get(1).text(); // returns "new content od 2"

答案 1 :(得分:1)

一般情况下,如果file2可以包含您要保留的重复项,我建议您使用HashSet<string>

 HashSet<string> toSkip = new HashSet<string>(File.ReadLines(path1));

 var toExport = File
   .ReadLines(path2)
   .Where(line => !toSkip.Contains(line));
 //.ToArray(); // <- if you want to materialize the final result

 // Test
 foreach (var item in toExport)
   Console.WriteLine(item);