21

下面的代码遍历一个列表并获取值,但是我将如何编写一个类似的语句来获取键和值

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>();
4

4 回答 4

35
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);
}
于 2012-12-23T17:56:15.573 回答
0

道歉...

这是错误的主题(循环值)。我的问题是遍历键值对,而不仅仅是值。如果没有异议,将把它留在这里作为从 SortedList 集合中获取值的可能选项。

我也只是想弄清楚这个错误,我的解决方案是使用该DictionaryEntry类型来替换错误输出KeyValuePair类型。从 MS 参考找到 https://msdn.microsoft.com/en-us/library/system.collections.dictionaryentry(v=vs.100).aspx

就我而言,我有创建SortedList类型集合的代码,但varorKeyValuePair类型都不起作用(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()); 
}

高温高压

戴夫

于 2016-01-13T19:35:31.693 回答
-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]);
}
于 2015-01-06T21:37:32.820 回答
-2
 bool value = list[key];

这可以帮助你。

于 2013-12-16T09:29:17.360 回答