以下代码遍历列表并获取值,但是我如何编写一个类似的语句来获取键和值
foreach (string value in list.Values)
{
Console.WriteLine(value);
}
例如像这样的
foreach (string value in list.Values)
{
Console.WriteLine(value);
Console.WriteLine(list.key);
}
列表的代码是:
SortedList<string, string> list = new SortedList<string, string>();
答案 0 :(得分:29)
foreach (KeyValuePair<string, string> kvp in list)
{
Console.WriteLine(kvp.Value);
Console.WriteLine(kvp.Key);
}
来自msdn:
GetEnumerator返回一个KeyValuePair<TKey, TValue>
类型的枚举器,它遍历SortedList<TKey, TValue>
。
正如Jon所说,您可以使用var
关键字而不是编写迭代变量的类型名称(类型将从使用中推断出来):
foreach (var kvp in list)
{
Console.WriteLine(kvp.Value);
Console.WriteLine(kvp.Key);
}
答案 1 :(得分:0)
...道歉
这是错误的主题(循环通过值)。我的问题是循环键值对,而不仅仅是值。 如果没有异议作为从SortedList集合中获取值的可能选项,请将此保留在此处。
我也试图找出此错误,我的解决方案是使用DictionaryEntry
类型替换错误输出KeyValuePair
类型。
从MS参考中找到
https://msdn.microsoft.com/en-us/library/system.collections.dictionaryentry(v=vs.100).aspx
在我的情况下,我创建了SortedList
类型集合的代码,var
或KeyValuePair
类型都没有工作(var
在尝试读取密钥时出错了KeyValuePair
集合项中的值和初始循环定义中出错的"Specified cast is not valid"
。两者都出错SortedList _dims = GetList("mysortedlist");
foreach (DictionaryEntry kvp in _dims)
{
Console.WriteLine(kvp.Key.ToString());
Console.WriteLine(kvp.Value.ToString());
}
)
以下是适用于我的代码示例:
/etc/xdg/awesome/
HTH
戴夫
答案 2 :(得分:-1)
bool value = list[key];
这可以帮到你。
答案 3 :(得分:-1)
使用密钥迭代并获取每个密钥的值:
SortedList<string, string> info = new SortedList<string, string>();
info.Add("path", "път");
info.Add("folder", "директория");
info.Add("directory", "директория");
info.Add("file", "Файл");
foreach (string key in info.Keys)
{
Console.WriteLine("\t{0}\t{1}", key, info[key]);
}