ASP.NET应该使用哪种类型的集合?

时间:2009-10-21 03:56:16

标签: asp.net arrays collections

我正在写一个类来保存我网站上的搜索。我希望在类中包含指定的所有参数的“数组”。我尝试了一个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);只要我可以可靠地获得正确的值与正确的值配对,该类如何在后端处理它是无关紧要的。

集合是否可以采用这种方式,还是应该考虑两个存储密钥的数组和一个存储值的数组?

5 个答案:

答案 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>>

相关问题