我创建了:
Dictionary<string, List <KeyValuePair<string,string>>> diction = new Dictionary<string, List<KeyValuePair<string,string>>>();
后来我添加到该列表中:
diction.Add(firststring, new List<KeyValuePair<string,string>>());
diction[firststring].Add(new KeyValuePair<string, string>(1ststringlist, 2ndstringlist));
所以现在,如果我想阅读并在屏幕上显示这个词典,我将如何使用foreach循环?它就像3个dimmension语法,现在不用如何创建它并访问它。
也有人可以解释如何阅读这部分内容吗?
diction[firststring].Add
这标志着[]的意思是什么?我在那里读了整本字典?
谢谢你的回答和你的时间。
答案 0 :(得分:5)
字典存储key / value
对。在您的情况下,您的密钥类型为string
,值类型为List <KeyValuePair<string,string>>
。所以当您这样做时:
diction[firststring]
firststring
是您的Key
,并且您正在尝试访问List <KeyValuePair<string,string>>
。我认为您最好的选择是嵌套循环。如果您想要显示所有值。例如:
foreach(var key in dict.Keys)
{
// dict[key] returns List <KeyValuePair<string,string>>
foreach(var value in dict[key])
{
// here type of value is KeyValuePair<string,string>
var currentValue = value.Value;
var currentKey = value.Key;
}
}
答案 1 :(得分:2)
要打印数据结构,请尝试以下操作:
// string.Join(separator, enumerable) concatenates the enumerable together with
// the separator string
var result = string.Join(
Environment.NewLine,
// on each line, we'll render key: {list}, using string.Join again to create a nice
// string for the list value
diction.Select(kvp => kvp.Key + ": " + string.Join(", ", kvp.Value)
);
Console.WriteLine(result);
通常,要遍历字典的值,您可以像使用任何IEnumerable数据结构一样使用foreach或LINQ。 IDictionary是IEnumerable&gt;,因此foreach变量的类型为KeyValuePair。
语法diction [key]允许您获取或设置存储在索引键处的字典的值。它类似于array [i]允许您在索引i处获取或设置数组值。例如:
var dict = new Dictionary<string, int>();
dict["a"] = 2;
Console.WriteLine(dict["a"]); // prints 2
答案 2 :(得分:0)
如果您只需要存储每行3个字符串值的行,那么您使用的数据结构太复杂了。
这是一个更简单的例子,基于Tuple
类:
public class Triplet : Tuple<string, string, string>
{
public Triplet(string item1, string item2, string item3) : base(item1, item2, item3)
{
}
}
所以你只需定义一个包含3个字符串的类Triplet
,如上所述。然后,您只需在代码中创建List
Triplets
:
// Your code here
var data = new List<Triplet>();
// Add rows
data.Add(new Triplet("John", "Paul", "George"));
data.Add(new Triplet("Gene", "Paul", "Ace"));
// Display
foreach(Triplet row in data)
{
Console.WriteLine("{0}, {1}, {2}", row.Item1, row.Item2, row.Item3);
}
这对阅读,理解和维护来说简单得多。