首页 > 解决方案 > 如何获得对应的“名称”

问题描述

我有一个 C# dictionary,其中我有一个对应NAMEID.

Dictionary<string, List<object>> dict = new Dictionary<string, List<object>>
{
    { "ID", new List<object> { "Id1", "Id2" } },
    { "NAME", new List<object> { "True", "False" } }
};

foreach (var id in dict["ID"])
{
    Console.WriteLine(id);
    //how to get corresponding "Name". For "Id1" = "True" and for "Id2" = "False"
}

在上面的代码中我循环了ID,但是如何得到对应的NAME呢?

标签: c#dictionary

解决方案


我认为更好的设计是创建一个具有这两个属性的类,然后进行迭代。如果您发现自己必须为简单的数据表示同步不同的数据结构,那么我建议重新考虑设计。

public class MyClass
{
    public string Id { get; set; }
    public bool Name { get; set; }
}

List<MyClass>然后在迭代时保持一个which :

foreach (var item in list)
{
    // Now access item.Id, item.Name
}

当您的数据有某种自然键并且您希望通过该键访问项目时,使用字典是很好的选择。由于项目是通过哈希函数访问的,因此通过键访问是在中完成的,O(1)而在列表中搜索是O(n)。但是,在您的情况下,您在任何情况下都在迭代所有项目,因此不需要字典并将数据安排在一个类中是一个更好的设计。

关于差异和一些参考资料:


推荐阅读