2014-01-09 59 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 –