我在C#中有2个文本文件说:文件A&文件B.我想比较两个文件内容,如果在文件A中找到任何内容存在于文件B中,那么我想删除文件B中的内容。
那么,如果c#中有任何方法可以为我做这个,请告诉我吗?
答案 0 :(得分:1)
如果你想比较你可以使用这个查询的行:
var newLines = File.ReadLines(f2Path).Except(File.ReadLines(f1Path)).ToList();
File.WriteAllLines(f2Path, newLines);
修改:根据您的评论
我想从file1
中存在id的file2中排除所有行
您可以将此left-outer-join与LINQ:
一起使用var idInF2 = from f2Line in File.ReadLines(f2Path)
join f1Line in File.ReadLines(f1Path)
on f2Line.Split(',')[0].Trim() equals f1Line.Split(',')[0].Trim() into gj
from lineOne in gj.DefaultIfEmpty()
where lineOne == null
select f2Line;
File.WriteAllLines(f2Path, idInF2.ToList());
或者您可以使用Contains
var f1IDs = File.ReadLines(f1Path).Select(l => l.Split(',')[0].Trim());
var newLines = File.ReadLines(f2Path)
.Select(l => new { Line = l, ID = l.Split(',')[0].Trim() })
.Where(x => !f1IDs.Contains(x.ID))
.Select(x => x.Line).ToList();
File.WriteAllLines(f2Path, newLines);