比较c#中的2个文本文件内容并删除相同的内容

时间:2014-01-09 14:12:26

标签: c#

我在C#中有2个文本文件说:文件A&文件B.我想比较两个文件内容,如果在文件A中找到任何内容存在于文件B中,那么我想删除文件B中的内容。

那么,如果c#中有任何方法可以为我做这个,请告诉我吗?

1 个答案:

答案 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);