Если вы хотите сравнить строки, которые вы могли бы использовать этот запрос:
var newLines = File.ReadLines(f2Path).Except(File.ReadLines(f1Path)).ToList();
File.WriteAllLines(f2Path, newLines);
Edit: в соответствии с вашим комментарием (ы)
я хочу, чтобы исключить все строки из файла2, где идентификатор существует в файле1
Вы можете использовать этот 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 строка), каждая строка имеет идентификатор, который является ineger, а затем отдельным, а длинными символами являются значение этого id, а следующие данные начинаются в другой строке –
@mahsamahdavi: Таким образом, вы хотите исключить все строки из файла2, где id существует в файле1 или где id и строка одинаковы? –
Я хочу исключить все строки из файла2, где id существует в файле1 –