Вы должны будете определить свой собственный контейнер, возможно, оборачивая список, чтобы получить полезную семантику для равенства хэш-равных (GetHashCode и Equals).Вы можете даже сделать оболочку соответствующей IList, если хотите.
Чтобы избежать проблем изменчивости и изменения результатов GetHashCode / Equals (что может привести к проблемам с использованием вашего нового объекта в словаре хеширования, проблематично!), Вы также должны предоставитькакой-то тип защиты (возможно, сделайте копию ввода при создании вашего типа) и / или задокументируйте ограничения.
Вы можете использовать SequenceEqual для реализации Equals довольно тривиально, но вы 'Вам нужно будет реализовать GetHashCode соответствующим способом - простой метод - это смещение XOR GetHashCode каждого элемента.
В качестве альтернативы, если он используется только в одном словаре, вы можете указать пользовательский * 1009.* IEqualityComparer и избегайте создания обернутого типа: Перегрузка конструктора словаря .
Это зависит от ваших конечных целей, и очень хорошо, что такие контейнеры обертывания уже существуют: -)
Примечание: в .NET4 есть набор классов Tuple <...> , которые переопределяют GetHashCode aи равноСм. cadenza как стороннюю альтернативу для предыдущих версий .NET.