【问题标题】:Store Collection of Data Fields and Retrieve Via Identifier存储数据字段的集合并通过标识符检索
【发布时间】:2010-08-04 18:41:48
【问题描述】:

在 C# 中,如何存储值的集合,所以如果我想稍后检索特定值,我可以执行以下操作:

myCollection["Area1"].AreaCount = 50;

count = myCollection["Area1"].AreaCount;

通用列表?

我想将多个属性存储到“密钥”中。上课就是答案吗?

【问题讨论】:

    标签: c# collections


    【解决方案1】:

    您正在寻找Dictionary<string, YourClass> class。 (其中YourClass 有一个AreaCount 属性)

    【讨论】:

    • 感谢 SLaks 的帮助。
    【解决方案2】:

    编辑
    根据您的评论,您似乎想要一个字典(如前所述),其中您的对象包含您的所有“值”。

    例如:

    public class MyClass
    {
       public int AreaCount;
       public string foo;
       public bool bar;
    }
    
    //Create dictionary to hold, and a loop to make, objects:
    Dictionary<string, MyClass> myDict = new Dictionary<string, MyClass>();
    while(condition)
    { 
       string name = getName(); //To generate the string keys you want
       MyClass mC = new MyClass();
       myDict.Add(name, mC);
    }
    
    //pull out yours and modify AreaCount
    myDict["Area1"].Value.AreaCount = 50;
    

    或者,您可以向您的类添加一个string“名称”(我使用字段作为示例,您可能会使用属性)并使用 Linq:

    //Now we have a list just of your class (assume we've already got it)
    myClass instanceToChange = (from items in myList
                              where Name == "Area1"
                              select item).FirstOrDefault();
    
    myClass.AreaCount = 50;
    

    这是否更有帮助?

    原始回复
    我不完全确定你在问什么,但我会先给出。

    给定一个您需要从中抓取特定对象的对象列表,(通常)有 4 种方法 - 取决于您的特定需求。

    Generic List&lt;T&gt; 只有在您的对象已经支持某种搜索(如 String.Contains())时才能真正做到这一点。

    SortedList 使用 IComparer 对 Key 值进行比较和排序,并以此方式排列列表。

    Dictionary 存储一个 Key 和 Value,以便可以检索 KeyValuePair 对象。

    HashTable 使用键和值,其中键必须实现 GetHashCode()ObjectEquals

    您需要的具体内容将根据您的具体要求而有所不同。

    【讨论】:

    • 我想将多个属性存储到一个键中。这可能吗?
    • 取决于您是否使用 .NET 4。如果是这样,您可以使用 List> 并将 TItem1 视为您的“键”。我不必经常使用 SortedList 或 HashTable,所以也许有人可以让我了解这些,但我知道你只能对字典中的给定键有价值。在 .NET 3.5 或更早版本中,您可能需要编写一些东西...
    • 查看您的编辑。所以我填充类的字段,然后将类与键一起存储到字典中
    • 是的,基本上。 YMMV,但这应该可以让您非常接近您的需求。
    【解决方案3】:

    此功能由indexers提供

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 2021-11-28
      • 2021-07-13
      • 2017-01-01
      • 1970-01-01
      • 2021-09-28
      • 2015-07-12
      • 2016-08-30
      相关资源
      最近更新 更多