2015-06-17 5 views
2

При использовании встроенной модульной системы тестирования Microsoft Visual Studio, как мне сравнить две коллекции, содержащие вложенные коллекции для равенства, когда дочерние коллекции считаются равными, если их содержимое равно?Сравнение структуры вложенных коллекций

В приведенном ниже примере AreEquals не работает, поскольку каждый список содержит другой экземпляр вложенного списка.

var a = new List<List<string>> { new List<string> { "a" } }; 
var b = new List<List<string>> { new List<string> { "a" } }; 

CollectionAssert.AreEqual(a, b); 

Я ищу утверждение, что возвращает верно при сравнении a и b потому что матч вложенных коллекций в состав/содержание, даже если они не являются тем же экземпляром списка.

Я пропустил простой способ сделать это? Пишем IEqualityComparer<T> вариант, но я надеюсь, что есть простой путь .... :-)

ответ

1
public bool AreEqual(List<List<string>> la, List<List<string>> lb) 
{ 
    if(la == null || lb == null) return false; 
    if(la.Count() != lb.Count()) return false; 
    for(int i; i ++; i < la.Count()) 
    { 
     if(la[i].Count() != lb[i].Count()) return false; 
     for(int j; j ++; j < la[i].Count()) 
     { 
      if(la[i][j] != lb[i][j]) return false; 
     } 
    } 
    return true; 
} 
+0

Было бы хорошо, если бы это вам сказать, что разница и где в двух списках разница найденный. Вы получаете обе функции бесплатно, используя StatePrinter –

+0

@ CarloV.Dango. Заданный вопрос - это тест, если он равен. Зачем комментировать мне? OP сможет увидеть ваш ответ. – Paparazzi

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