我已经实现了普通旧式的2个文本文件的逐行比较:
string[] linesOld = File.ReadAllLines(Path.Combine(directory, oldFileName));
string[] linesNew = File.ReadAllLines(Path.Combine(directory, newFileName));
for (int i = 1; i < linesNew.Length; i++)
{
if (linesNew[i] != linesOld[i])
{
Console.WriteLine("Line: {0}, Old: {1}, New: {2}", i, linesOld[i], linesNew[i]);
}
}
如何以新的LINQ样式重写此代码?
我应该使用
linesNew.Except(linesOld);
答案 0 :(得分:8)
您可以使用Zip
方法:
int i = 1;
foreach (var lines in linesOld.Zip(linesNew, (oldLine, newLine) =>
new { oldLine, newLine, lineNumber = i++ }).Where(x => x.oldLine != x.newLine))
Console.WriteLine("Line: {0}, Old: {1}, New: {2}",
lines.lineNumber, lines.oldLine, lines.newLine);