c# Dictionary<string,string> how to loop through items without knowing key
本问题已经有最佳答案,请猛点这里访问。
我有一个:
1 2 3 4 5 | var selectedDates = new Dictionary<string, string>(); selectedDates.Add("2014-06-21", DateTime.Now.ToLongDateString()); selectedDates.Add("2014-07-21", DateTime.Now.AddDays(5).ToLongDateString()); selectedDates.Add("2014-08-21", DateTime.Now.AddDays(9).ToLongDateString()); selectedDates.Add("2014-09-21", DateTime.Now.AddDays(14).ToLongDateString()); |
我怎么能在不知道钥匙的情况下循环物品?
For example I want to get the value of the item[0]
如果我这样做:
1 | var item = selectedDates[0].value; // I get an error |
How can I loop trough items without knowing the key?
For example I want to get the value of the
item[0]
您想将字典视为类似于列表或数组的(已排序)集合,并获取其中的第一项吗?
你可以这样做,因为
1 | string valueAtFirstPosition = selectedDates.First().Value; |
但是,请注意,字典并不打算用作有序集合。它是一个集合,可用于通过键快速查找值。但你还是可以把它列举出来。
1 2 3 4 | foreach(KeyValuePair<string, string>keyVal in selectedDates) { Console.WriteLine("Key: {0} Value: {1}", keyVal.Key, keyVal.Value); } |
你不应该仅仅依靠那个命令。我认为在当前的实现中,只要不删除项,顺序就稳定了。读
阅读:为什么字典是"未排序"?
试试这个
1 2 3 4 | foreach (string key in selectedDates.Keys) { var item = selectedDates[key]; } |
让我给你做两件事。首先,可以循环或使用LINQ访问元素,就像在列表中一样:
1 2 3 4 5 6 7 8 9 10 11 | var dict = new Dictionary<string, string>(); // loop foreach (var item in dict) { var key = item.Key; var value = item.Value; } //"first" (see below) var firstItem = dict.First(); |
但是,请注意,您所指的第一个项目几乎可以是
这种顺序在某些实现中是已知的,但当元素的顺序很重要时,列表或数组可能更适合。.NET中的
它很简单,用一个
1 | var date = selectedDates.ElementAt(0).Value; |
试试这个:
1 2 3 4 | foreach(var key in selectedDates.Keys) { var value = selectedDates[key]; } |
尝试:
1 2 3 4 | foreach (var date in selectedDates) { var item = date.Value; } |
使用此
1 | var result = selectedDates.Where((d,i)=>i==0); |