循环遍历字典对象

12 浏览
0 Comments

循环遍历字典对象

我对.NET很新,习惯于使用PHP。我需要通过foreach循环遍历对象字典。我的设置是一个MVC4应用程序。

模型看起来像这样:

public class TestModels
{
    Dictionary<int, dynamic> sp = new Dictionary<int, dynamic>
    {
        {1, new {name="abc", age="1"}},
        {2, new {name="def", age="2"}}
    }
}

控制器:

public class TestController : Controller
{
   Models.TestModels obj = new Models.TestModels();
}

如何循环遍历obj对象并检索字典的值,在视图中打印它们?

admin 更改状态以发布 2023年5月24日
0
0 Comments

这取决于您在词典中寻求的内容

Models.TestModels obj = new Models.TestModels();
foreach (var keyValuPair in obj.sp)
{
    // KeyValuePair
}
foreach (var key in obj.sp.Keys)
{
     // Int 
}
foreach (var value in obj.sp.Values)
{
    // dynamic
}

0
0 Comments

一种方法是循环遍历字典的键,我推荐这种方法:

foreach(int key in sp.Keys)
    dynamic value = sp[key];


另一种方法是循环遍历字典的键值对序列:

foreach(KeyValuePair pair in sp)
{
    int key = pair.Key;
    dynamic value = pair.Value;
}


我建议使用第一种方法,因为如果在键的Keys属性上使用适当的LINQ语句进行修饰,例如sp.Keys.OrderBy(x => x)可以帮助您按键的升序检索项目且控制更加灵活。请注意,Dictionary在内部使用哈希表数据结构,因此如果使用第二种方法,项目的顺序是无法预测的。

更新(2016年12月1日):将var替换为实际类型,以使答案更清晰。

0