在Viewstate中保存类型(string,List <string>)的数据

时间:2019-05-07 21:36:40

标签: c# asp.net .net viewstate

用于在ViewState中存储Key(多个值)的集合。我的数据类型为string KeyList<string> Values,即一个键可以具有一个或多个字符串值

说我有一些国家和城市需要保存在ViewState中。

我会

美国-纽约,哥伦比亚特区,芝加哥

加拿大-多伦多,温哥华,蒙特利尔

我想将此数据保存到ViewState,并想知道如何最好地保存而不创建自定义可序列化对象等。它们只是字符串。

我应该将它们另存为字符串键,用逗号分隔列表值吗?

2 个答案:

答案 0 :(得分:0)

您可以使用注释中提到的字典,这将是尝试访问该集合中数据的最有效方法。您还可以像这样使用类集合:

import string
import itertools

from pyjarowinkler import distance


WORDS_CACHE = {}


def next_letter():
    base = ""
    while True:
        for ch in string.ascii_lowercase:
            yield base + ch
        base += ch


GENERATOR = next_letter()


def encode(word):
    if word not in WORDS_CACHE:
        WORDS_CACHE[word] = GENERATOR.next()
    return WORDS_CACHE[word]


def score(first_name, second_name):
    return distance.get_jaro_distance(
        "".join(map(encode, first_name.split())),
        "".join(map(encode, second_name.split())),
    )

在该类中,您尝试将其写入集合中,对于每个国家/地区,您都将使用国家/地区名称作为字符串调用一个新的国家/地区类别,然后将您的州或地区添加到列表中。然后,您可以将该类的实例添加到您的集合中。像这样:

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;}
} 

您可以为要添加的每个国家/地区执行类似的操作。希望这可以帮助您。但是,词典路线肯定比这更快,更容易。

答案 1 :(得分:0)

似乎这个简单的数据可以存储在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;