Если ваша конкретная ситуация позволяет вставлять в ваш словарь только один из набора объектов с повторяющимися свойствами Key
, вы можете полностью избежать этой ошибки, используя метод LINQ Distinct
перед вызовом ToDictionary
.
var dict = myCollection.Distinct().ToDictionary(x => x.Key);
Конечно, вышеописанное будет работать только в том случае, если классы в вашей коллекции переопределяют Equals
и GetHashCode
таким образом, что учитывается только свойство Key
.Если это не так, вам нужно создать пользовательский IEqualityComparer<YourClass>
, который сравнивает только свойство Key
.
var comparer = new MyClassKeyComparer();
var dict = myCollection.Distinct(comparer).ToDictionary(x => x.Key);
Если вам нужно убедиться, что все экземпляры в вашей коллекции заканчиваются всловарь, тогда использование Distinct
не будет работать для вас.