Сравнение структуры вложенных коллекций

При использовании встроенной среды модульного тестирования 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;
}
Другие вопросы по тегам