2014-01-09 54 views

回答

1

如果你想行比较,你可以使用此查询:

var newLines = File.ReadLines(f2Path).Except(File.ReadLines(f1Path)).ToList(); 
File.WriteAllLines(f2Path, newLines); 

编辑:根据您的评论(县)

我要排除所有行from file2其中id存在于file1中

您可以使用此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); 
+0

TNX您的答复。但我的数据,例如:123,absdefgh ....(也许只要少数行,而不是1行)每行都有一个id,这是一个ineger然后分开,而长字符就是这个值id,并且下一个数据从另一行开始 –

+0

@mahsamahdavi:那么你想排除file2中id存在于ID或字符串相同的所有行? –

+0

我想从文件2排除所有行其中文件1 –