2013-08-27 3 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) у вас? Поскольку Маурисио предоставил вам код, он, вероятно, мог бы помочь вам правильно использовать его. –

ответ

1

Используйте SequenceEqual метод на excelRows [я] .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

Смежные вопросы