Мне нужен словарь с несколькими ключами 2 разных типов (int и string, оба уникальные, поэтому они могут появляться только внутри 1 ключа).Вот пример: информация о группе (GroupInfo) может запрашиваться либо по GroupdId, либо по одному из имен членов:
GroupId MemberNames GroupInfo
{1, John, Mary, Joe} ==> {GroupInfo}
Таким образом, информация о группе должна возвращаться по запросу либо по id (1), либо по одному изимена членов (Джон).
Моим первым решением было создание ключа, который оборачивает GroupdId и MemberNames с переопределенным методом Equals, который сравнивает GroupIds и просматривает список членов.Однако, чтобы сделать эти записи равными:
GroupId MemberNames
{0, John}
{1, null}
{1, Mary}
GetHashCode должен возвращать то же самое значение константы.Это приведет к тому, что словарь станет связанным списком, а производительность снизится до O (N) в лучшем случае.
Другое решение состоит в том, чтобы хранить 2 словаря отдельно: GroupId ==> GroupInfo, MemberName ==> GroupInfo.
Есть еще идеи?