0
我在C#2文本文件說:文件&文件B.我想這兩個文件的內容進行比較,如果有在文件中發現的任何內容一個是存在於文件B然後我想刪除文件B中的內容。比較C#2項文本文件的內容,並刪除同一內容
那麼如果有任何方法在C#中可以爲我做到這一點,那麼請讓我知道?
我在C#2文本文件說:文件&文件B.我想這兩個文件的內容進行比較,如果有在文件中發現的任何內容一個是存在於文件B然後我想刪除文件B中的內容。比較C#2項文本文件的內容,並刪除同一內容
那麼如果有任何方法在C#中可以爲我做到這一點,那麼請讓我知道?
如果你想行比較,你可以使用此查詢:
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);
TNX您的答覆。但我的數據,例如:123,absdefgh ....(也許只要少數行,而不是1行)每行都有一個id,這是一個ineger然後分開,而長字符就是這個值id,並且下一個數據從另一行開始 –
@mahsamahdavi:那麼你想排除file2中id存在於ID或字符串相同的所有行? –
我想從文件2排除所有行其中文件1 –