Страницы

Поиск по вопросам

суббота, 6 октября 2018 г.

Составной ключ в Dictionary

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


Ответ

Как один из вариантов
Можно использовать класс Tuple. Например Dictionary, T3>, где T1, T2, T3 значения любых типов. В Tuple сравниваться будет по внутренним значениям.
у Tuple переопределены методы GetHashCode и Equals © Grundy Использовать структуру, т.к. у структур идет сравнение по всем имеющимся полям Передавать IEqualityComparer в конструктор, где Т - тип ключа. Сравнение будет производиться с использованием компаратора.

Комментариев нет:

Отправить комментарий