Допустим, есть класс, у которого есть 2 цифровых поля. Хотелось бы эти 2 поля сделать первичным ключем в Dictionary. В будущем этот ключ будет использоваться для поиска совпавших значений между 2 мя словарями. Как это можно сделать, что бы не потерять в производительности? У меня была идея, хранить их как строку, но может быть есть решение лучше? P.S Dictionary использую из-за высокой скорости поиска по ключу. К моему удивлению, DataTable оказался тормознутее=( на 20к строк
Ответ Есть несколько путей использовать составной ключ для Dictionary (аналогично для HashSet) Использовать структуру. Правила сравнения структур таковы, что сравниваются значения всех полей, а не ссылки на объекты. Использовать класс с переопределенными методами Equals, GetHashCode. Это позволит использовать для вычисления хэша не все поля класса, а только нужные. Использовать класс реализующий IEquatable Использовать при создании словаря перегрузку конструктора принимающую IEqualityComparer