基本上我需要做的是:
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();
我觉得有一个适合我的功能,虽然这是我想出来的,谢谢你的帮助!
答案 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);