2013-08-27 26 views
0

我比較兩個excel文件和我當前的測試 - 我有兩個文件完全相同,每個包含一列和5行。當我檢查它們是否平等時,它會失敗並且說其中一個文件已經向它添加了項目。檢查文件大小沒有通過測試用例

不知道如果我檢查什麼錯誤的方式:

bool areEqual = false; 
if (fileB.excelRows.Count() == fileA.excelRows.Count()) 
{ 
    int i = 0; 
    while ((i < fileB.excelRows.Count()) && (fileB.excelRows[i] == fileA.excelRows[i])) 
    { 
     i += 1; 
    } 
    if (i == fileB.excelRows.Count()) 
    { 
     areEqual = true; 
    } 
} 
if (areEqual) 
    MessageBox.Show("The files are the same"); 
else 
{ 
    .... 
} 
+0

你能不能給我們介紹一下類/類型excelRows的更多信息? – jmstoker

+0

@jmstoker我繼續前進,並添加上面的類。 – Masriyah

+0

爲什麼不直接向[前一個答案](http://stackoverflow.com/questions/18452660/comparing-two-excel-files-for-differences)請求澄清?由於Mauricio爲您提供了代碼,他可能也可以幫助您正確使用它。 –

回答

1

使用SequenceEqual方法上excelRows [I] .rowHash。

相反的:

while ((i < fileB.excelRows.Count()) && (fileB.excelRows[i] == fileA.excelRows[i])) 

將其更改爲:

while ((i < fileB.excelRows.Count()) && 
    (fileB.excelRows[i].rowHash.SequenceEqual(fileA.excelRows[i].rowHash))) 
+0

這是針對檢查只是三個項目? – Masriyah

+0

是的,但你可以將它應用到你的算法。在這種情況下'fileB.excelRows [i] == fileA.excelRows [i]'你正在比較ExcelRow類。你需要比較每個類的rowHash,這可以通過使用SequenceEqual來完成。 – jmstoker

+0

在測試了更多代碼之後,看起來您的算法對於比較是正確的。你在每一行上運行Calculatehash()嗎? – jmstoker

相關問題