-1

假设我的数据如下所示:

Item 1
Item 2
Item 3
  SubKey1:SubValue1
  SubKey2:SubValue2
Item 4
  SubKey1:SubValue1
Item 5
  SubKey1:SubValue1
  SubKey2:SubValue2
  SubKey3:SubValue3

是否有支持这一点的数据结构,或者我需要创建一个新类型?

4

5 回答 5

4

如果你想要的一切都是一个字符串,你可以使用这个:

Dictionary<string, Dictionary<string, string>>

你会像这样使用它:

var myItems = new Dictionary<string, Dictionary<string, string>>();

myItems.Add("Item 1", null);
myItems.Add("Item 2", null);

var subDictionary1 = new Dictionary<string, string>();
subDictionary1.Add("subKey1", "subValue1");
subDictionary1.Add("subKey2", "subValue2");
myItems.Add("Item 3", subDictionary1);

var subDictionary2 = new Dictionary<string, string>();
subDictionary2.Add("subKey1", "subValue1");
myItems.Add("Item 4", subDictionary2);

var subDictionary3 = new Dictionary<string, string>();
subDictionary3.Add("subKey1", "subValue1");
subDictionary3.Add("subKey2", "subValue2");
subDictionary3.Add("subKey3", "subValue3");
myItems.Add("Item 5", subDictionary3);
于 2013-05-10T20:36:02.630 回答
1

这是一个相当模糊的问题。

但是,这听起来像是 Dictionary 对象的列表:

class MyItem : Dictionary<KeyType,ValueType> {
    string MyItemData1;
    int MyItemData2;
}

然后,只需列出您的物品:

List<MyItem> ItemList = new List<MyItem>();
于 2013-05-10T20:34:03.607 回答
0

从我看到你可以使用List<Dictionary<string, string>>

在前两项中,您可能只有一个空字典(或 null)。

但这有点取决于你想用它做什么。

于 2013-05-10T20:30:22.183 回答
0
struct item
{
   public string Id;
   public Dictionary<string,string> MyValues;
}

然后创建一个项目列表

List<item> myItemList = new List<item>();
于 2013-05-10T20:33:13.370 回答
0

对我来说,它看起来像是POCO的列表

public class SomeClass 
{
  public string Name {get;set;}
  public List<KeyValuePair<string, string>> ChildValues {get;set;}
}

var myItems = new List<SomeClass> { 
 new SomeClass { Name = "Item 1"}, 
 new SomeClass { Name = "Item 2"}, 
 new SomeClass { 
                  Name = "Item 3", 
                  ChildValues = new List<KeyValuePair<string, string>> 
                         { 
                           new KeyValuePair("SubKey1", "SubValue1"), 
                           new KeyValuePair("SubKey2", "SubValue2") 
                         } 
                }

};

foreach (var item in myItems) 
{
  Console.WriteLine(item.Name);
  if (item.ChildValues != null) 
  {
      item.ChildValues.Each(i=>Console.WriteLine("\t{0}:{1}", i.Key, i.Value);
  }
}

这是最重要且未经测试的,但我认为它会很接近

于 2013-05-10T20:39:10.100 回答