我正在写一个类来保存我网站上的搜索。我希望在类中包含指定的所有参数的“数组”。我尝试了一个NameValueCollection,但我遇到的问题是,当我有一个多选(例如状态)时,它只存储其中一个条目,因为密钥被占用。我需要一个集合类型,让我有类似以下内容:
Name => Bob
State => Alaska
State => Oregon
State => Washington
Company => Acme
我应该使用哪种类型的收藏品?
编辑:==============================
我不确定到目前为止的评论会有所帮助。让我再解释一下。此搜索类将用于保存我网站上任何搜索的参数。不同的搜索可能具有或不具有相同的参数。当调用此类save方法时,搜索将被转储到数据库中。将在Searches表中创建一条记录,并且将在SearchesParameters表中创建集合中的项目。 SearchesParamaters表包含这些列(ID,searching_ID,key,value)。
如果有两个带有“State”键的参数,数据库可能会更少关注。为了使我的类足够通用,可以在所有搜索中使用而不必更新,我希望有一个集合/数组,让我拥有键/值对,并让我拥有相同键的多个实例。真的我只想调用searchObj.addParameter(KEY,VALUE);只要我可以可靠地获得正确的值与正确的值配对,该类如何在后端处理它是无关紧要的。
集合是否可以采用这种方式,还是应该考虑两个存储密钥的数组和一个存储值的数组?
答案 0 :(得分:1)
将字符串映射到List<string>
的字典。类似于Dictionary<string, List<string>>
。
如果“词典”中没有元素,请为该键创建一个新列表并添加到该列表中。否则,只需将新值添加到现有列表中。
答案 1 :(得分:1)
创建一个类,并将该类存储在集合中。
class Search
{
public string Name { get; set; }
public List<string> State { get; set; }
public string Company { get; set; }
}
然后,每次搜索可以有多个状态。将此实例添加到List并离开。
答案 2 :(得分:1)
通用列表(System.Collections.Generic)怎么样?
例如,
string name;
List<string> states;
string company;
您可以阅读有关通用列表here
的信息答案 3 :(得分:1)
您应该使用List<KeyValuePair<string, string>>
答案 4 :(得分:0)
我会使用Dictionary<string, HashSet<string>>
。