Ответ 1
Что означает для вас равенство при сравнении списков? Вам все равно, что списки точно такие же.... одни и те же элементы в одном порядке? Или просто укажите один и тот же набор значений, независимо от порядка.
Если вы действительно хотите проверить, что списки содержат одну и ту же последовательность значений в одном порядке, вы можете использовать метод SequenceEqual()
в LINQ:
bool areEqual = listA.SequenceEqual( listB );
Если списки не совпадают с порядком, вы можете сначала отсортировать их:
bool areEqual = listA.OrderBy(x=>x).SequenceEqual( listB.OrderBy(x=>x) );
Если списки могут содержать дубликаты, а дубликаты не имеют значения (по отношению к равенству), вы можете использовать сравнение сравнения:
bool setEqual = new HashSet<int>( listA ).SetEquals( listB );
Если дубликаты не имеют значения, и вы заинтересованы в том, чтобы избежать затрат на сравнение (заказ, построение хэшета и т.д.), вы могли бы сначала просто сравнить размеры двух коллекций и сравнить только, являются ли они то же самое.