Сохранение данных типа (строка, список <string>) в Viewstate - PullRequest
0 голосов
/ 08 мая 2019

Какая коллекция используется для хранения Key, нескольких значений в ViewState. Мои данные имеют тип string Key, List<string> Values, т. Е. Ключ может иметь одно или несколько строковых значений

Скажем, у меня есть страны и города, которые мне нужно сохранить во ViewState.

У меня будет

США - Нью-Йорк, округ Колумбия, Чикаго

Канада - Торонто, Ванкувер, Монреаль

и т.д.

Я хотел бы сохранить эти данные во ViewState, и мне было интересно, как лучше всего сохранить их, не создавая настраиваемые сериализуемые объекты и т. Д. Они просто строки.

Стоит ли сохранять их как строковый ключ, список значений через запятую?

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Кажется, что эти простые данные могут быть сохранены в Dictionary<string, List<string>>. Ключи словаря - это штат / регион, а значения - список городов.

Вы можете инициализировать его так:

Dictionary<string, List<string>> locations = new Dictionary<string, List<string>>
{
    { "USA", new List<string> {"NY", "DC", "Chicago"}},
    { "Canada", new List<string> {"Toronto", "Vancouver", "Montreal"}},
};

Затем установите запись ViewState с этими данными

ViewState["locs"] = locations;
0 голосов
/ 08 мая 2019

Вы можете использовать словарь, упомянутый в комментариях, который будет наиболее эффективным способом доступа к вашим данным в этой коллекции. Вы также можете использовать коллекцию классов следующим образом:

public class CollectingData
{
 public Collection<Countries> CollectCountries ;

 public CollectingData()
 {
 CollectCountries = new Collection<Countries>
 }
}

public class Countries
{
 public string country { get; set;}

 public List<string> states { get; set;}
} 

И в классе, который вы пытаетесь записать в коллекцию, для каждой страны вы называете новую страну класса с именем стран в качестве строки, а затем добавляете свои штаты или территории в свой список.Затем вы можете добавить этот экземпляр класса в вашу коллекцию.вот так:

Countries mycountry = new Countries();
mycountry.states = new List<string>();

mycountry.country = "United States";
mycountry.states.Add("thisstate", "thatState");

CollectCountries.Add(mycountry);

Вы можете сделать что-то похожее на это для каждой страны, которую вы хотите добавить.Надеюсь, это поможет вам.словарный маршрут определенно будет быстрее и проще, чем этот.

...