Учитывая общий список, мне нужен какой-то индекс (в смысле базы данных), который позволит мне быстро найти. Ключи для этого индекса не будут уникальными, поэтому я не могу использовать словарь. Вот что я имею в виду: учитывая класс Foo {P1, P2, P3}, который может иметь такие данные, как
{ "aaa", 111, "yes" }
{ "aaa", 112, "no" }
{ "bbb", 111, "no" }
{ "bbb", 220, "yes" }
{ "bbb", 220, "no" }
{ "ccc", 300, "yes" }
Мне нужно быстро получить доступ ко всем записям, где P1 - "bbb" (3-й, 4-й и 5-й), или все те, где P2 - 111 (1-й и 3-й). Я мог бы использовать отсортированный список, но если мне понадобится более одного способа сортировки/индексирования, я получаю дублированные списки.
Есть ли что-то встроенное в .NET framework или, возможно, в библиотеку ОС, которая бы сделала что-то подобное? Спасибо.
P.S. Я упомянул "отсортированный список" с мыслью, что отсортированный список вернет/найдет элемент намного быстрее. Мне не нужен список, который нужно сортировать; Я просто ищу быстрого поиска/поиска.