繁体   English   中英

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

[英]ASP.NET which type of collection should I use?

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

是一个集合的方式,或者我应该考虑像存储键和存储值的两个数组?

将String映射到List<string> Dictionary。 Dictionary<string, List<string>>

如果“词典”中没有元素,请为该键创建一个新列表并添加到该列表中。 否则,只需将新值添加到现有列表中。

创建一个类,并将该类存储在集合中。

class Search
{
  public string Name { get; set; }
  public List<string> State { get; set; }
  public string Company { get; set; }
}

然后,每次搜索可以有多个状态。 将此实例添加到List并离开。

通用列表(System.Collections.Generic)怎么样?

例如,

string name;
List<string> states;
string company;

您可以在此处阅读有关通用列表的信息

您应该使用List<KeyValuePair<string, string>>

我会使用Dictionary<string, HashSet<string>>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM