Как вы хотите обрабатывать дубликаты? Например, вы бы посчитали {2, 1, 1} таким же, как {1, 2}? (Я предполагаю, что порядок не имеет значения ... в противном случае просто используйте SequenceEqual
.)
При условии, что вы эффективно заботитесь только о "наборах", есть два варианта:
Быстрый и грязный способ:
if (!list1.Except(list2).Any() && !list2.Except(list1).Any())
Немного чище:
var set = new HashSet<int>(list1); // Adjust case accordingly
if (set.SetEquals(list2))
{
// Lists were equal
}
Следует учесть одну вещь: если вас интересует только обработка их как наборов, вы можете использовать представление набора для начала вместо списка ...