如何获得相应的"名称"

use*_*018 2 c# dictionary

我有一个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"
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码我循环ID,但如何获得相应的NAME

Gil*_*een 7

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

public class MyClass
{
    public string Id { get; set; }
    public bool Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后List<MyClass>在迭代时按住一个:

foreach (var item in list)
{
    // Now access item.Id, item.Name
}
Run Code Online (Sandbox Code Playgroud)

当您拥有某种类型的数据自然键并且您希望通过该键访问项目时,使用词典是很好的.由于通过散列函数访问项目,因此通过密钥访问是O(1)在列表中进行搜索O(n).但是在你的情况下,你在任何情况下迭代所有项目,所以不需要字典并在类中安排数据是一个更好的设计.

关于差异和一些参考: