我已经实现了普通旧式的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)
?
您可以使用以下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)
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |