Поиск альтернативы для List <KeyValuePair <string, KeyValuePair <string, string >>> - PullRequest
5 голосов
/ 24 июня 2009

Закончено этой ужасной структурой данных:

List<KeyValuePair<string, KeyValuePair<string, string>>>

Скорее всего, оно не будет огромным (<1K), и я буду повторять этот список снова и снова. </p>

Кто-нибудь может придумать лучшую альтернативу со встроенными типами?

Ответы [ 2 ]

10 голосов
/ 24 июня 2009

Лучшим вариантом было бы обернуть свой собственный класс Tuple, что-то вроде , поставляемого в .NET 4.0 .

Тогда вы можете иметь один:

List<Tuple<string,string,string>>

Это достаточно просто написать в .NET 2.0 - это просто триплет значений, а не 2 в KeyValuePair. Однако в .NET 2.0 нет встроенного эквивалента для тройки значений.


Edit:

Прочитав ваш комментарий о запросах в другом посте, я подумал, что тоже упомяну об этом -

Даже если у вас нет уникальных значений в key1, вы можете значительно ускорить любой тип запроса / поиска, используя:

Dictionary<string, List<KeyValuePair<string,string>>>

Затем, вместо того, чтобы хранить одну KeyValuePair, вы можете просмотреть их список по ключу в первом элементе. Это было бы намного быстрее, если бы вам нужно было найти все элементы с указанным первым ключом ...

10 голосов
/ 24 июня 2009
struct MrStruct
{
   public string Key1,
   public string Key2,
   public string Value1
}


List<MrStruct>;

Предполагается, что вы обращаетесь к списку последовательно, как вы и говорили, повторять. Потенциально, другие структуры данных могут быть быстрее для поиска.

...