Существуют преимущества для наличия таблиц с меньшим количеством столбцов, но также необходимо посмотреть сценарий выше и ответить на эти вопросы:
клиенту разрешат иметь больше чем 1 адрес? В противном случае тогда отдельная таблица для адреса не необходима. Если так, тогда отдельная таблица становится полезной, потому что можно легко добавить больше адресов по мере необходимости в будущем, где становится более трудным добавить больше столбцов к таблице.
var same = list1.Except(list2).Count() == 0 &&
list2.Except(list1).Count() == 0;
Изменить: Это было написано до того, как OP добавил, что {1, 2, 2} равно {1, 1, 2} (относительно обработки повторяющихся записей).
Это будет работать, пока элементы сопоставимы по порядку.
bool equal = list1.OrderBy(x => x).SequenceEqual(list2.OrderBy(x => x));
Если количество элементов списка 1 в списке 2 равно количеству элементов списка 2 в списке 1, то оба списка содержат одинаковое количество элементов, оба являются подмножествами друг друга - другими словами, они оба содержат одинаковые элементы.
if (list1.Count(l => list2.Contains(l)) == list2.Count(l => list1.Contains(l)))
return true;
else
return false;
You need to get the intersection of the two lists:
bool areIntersected = t1.Intersect(t2).Count() > 0;
In response to you're modified question:
bool areSameIntersection = t1.Except(t2).Count() == 0 && t2.Except(t1).Count() == 0;