我有一个:
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());
如何在不知道密钥的情况下循环项目?
例如,我想获得项目[0]
的值
如果我这样做:
var item = selectedDates[0].value; // I get an error
答案 0 :(得分:7)
如何在不知道密钥的情况下循环项目?
例如,我想获得
的值item[0]
您希望将字典视为(有序)集合,类似于列表或数组,并获取其中的第一项?
您可以因为Dictionary<string, string>
隐含IEnumerable<KeyValuePair<string, string>>
。只需使用First
或FirstOrDefault
:
string valueAtFirstPosition = selectedDates.First().Value;
但是,请注意字典并不打算用作有序集合。它是一个集合,可用于通过密钥快速查找值。但无论如何你可以枚举它。
foreach(KeyValuePair<string, string>keyVal in selectedDates)
{
Console.WriteLine("Key: {0} Value: {1}", keyVal.Key, keyVal.Value);
}
你应该完全不依赖那个命令。我认为在当前的实现中,只要您不删除项目,订单就是稳定的。 Read
答案 1 :(得分:2)
试试这个
foreach (string key in selectedDates.Keys)
{
var item = selectedDates[key];
}
答案 2 :(得分:1)
试试这个:
foreach(var key in selectedDates.Keys)
{
var value = selectedDates[key];
}
答案 3 :(得分:1)
很简单,使用foreach
循环播放或获取特定索引:
var date = selectedDates.ElementAt(0).Value;
答案 4 :(得分:1)
让我为你整理两件事。首先,您可以循环或使用LINQ来访问元素,就像您在列表中一样:
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();
但是,请注意,您所指的第一项在Dictionary
中几乎可以是任何项目。字典以任何便于查找的顺序存储元素(也就是设置)。
这个顺序对于某些实现是已知的,但是当元素的顺序很重要时,列表或数组可能更适合。 .NET中的Dictionary
是hash table data structure的实现(树图是另一个地图实现)。
答案 5 :(得分:0)
使用Where
的重载:
var result = selectedDates.Where((d,i)=>i==0);
答案 6 :(得分:0)
尝试:
foreach (var date in selectedDates)
{
var item = date.Value;
}