假设我的数据如下所示:
Item 1
Item 2
Item 3
SubKey1:SubValue1
SubKey2:SubValue2
Item 4
SubKey1:SubValue1
Item 5
SubKey1:SubValue1
SubKey2:SubValue2
SubKey3:SubValue3
是否有支持这一点的数据结构,或者我需要创建一个新类型?
假设我的数据如下所示:
Item 1
Item 2
Item 3
SubKey1:SubValue1
SubKey2:SubValue2
Item 4
SubKey1:SubValue1
Item 5
SubKey1:SubValue1
SubKey2:SubValue2
SubKey3:SubValue3
是否有支持这一点的数据结构,或者我需要创建一个新类型?
如果你想要的一切都是一个字符串,你可以使用这个:
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);
这是一个相当模糊的问题。
但是,这听起来像是 Dictionary 对象的列表:
class MyItem : Dictionary<KeyType,ValueType> {
string MyItemData1;
int MyItemData2;
}
然后,只需列出您的物品:
List<MyItem> ItemList = new List<MyItem>();
从我看到你可以使用List<Dictionary<string, string>>
在前两项中,您可能只有一个空字典(或 null)。
但这有点取决于你想用它做什么。
struct item
{
public string Id;
public Dictionary<string,string> MyValues;
}
然后创建一个项目列表
List<item> myItemList = new List<item>();
对我来说,它看起来像是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);
}
}
这是最重要且未经测试的,但我认为它会很接近