使用LINQ查找逐行差异

hel*_*boy 0 c# linq

我已经实现了普通旧式的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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何以新的LINQ样式重写此代码?

也许我应该用

linesNew.Except(linesOld);
Run Code Online (Sandbox Code Playgroud)

?

Tim*_* S. 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);
Run Code Online (Sandbox Code Playgroud)