C# 如何获得相应的;名称“;
我有一个C#C# 如何获得相应的;名称“;,c#,dictionary,C#,Dictionary,我有一个C#字典,其中我有一个对应的名称,与ID相对应 Dictionary<string, List<object>> dict = new Dictionary<string, List<object>> { { "ID", new List<object> { "Id1", "Id2" } }, { "NAME", new List<object> { "True", "False" } } }; f
字典
,其中我有一个对应的名称
,与ID
相对应
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"
}
Dictionary dict=新字典
{
{“ID”,新列表{“Id1”,“Id2”},
{“名称”,新列表{“真”、“假”}
};
foreach(dict[“id”]中的变量id)
{
控制台写入线(id);
//如何获取相应的“名称”。对于“Id1”=“True”和“Id2”=“False”
}
在上面的代码中,我循环通过
ID
,但是如何获得相应的名称
我认为更好的设计是创建一个具有两个属性的类,然后进行迭代。如果您发现自己必须为简单的数据表示同步不同的数据结构,那么我建议重新考虑设计
public class MyClass
{
public string Id { get; set; }
public bool Name { get; set; }
}
然后按住列表
,在迭代时:
foreach (var item in list)
{
// Now access item.Id, item.Name
}
当您的数据具有某种自然键,并且希望通过该键访问某个项时,使用字典是很好的。由于项目是通过哈希函数访问的,按键访问在
O(1)
中完成,而在列表中搜索是O(n)
。然而,在您的例子中,您在任何情况下都在迭代所有项,因此不需要字典,将数据安排在类中是更好的设计
关于差异和一些参考资料:
列表中,或者使用字典:
即使只有ID和Name的映射,也可以有非常简单的变量
Dictionary<string,string> lookup = new Dictionary<string,string>();
lookup.Add("ID1","True")
字典查找=新建字典();
lookup.Add(“ID1”、“True”)
如果名称是布尔类型,则在
Dictionary<string,bool> lookup = new Dictionary<string,bool>();
字典查找=新建字典();
其他答案可能是您应该如何更好地构造代码。但是,如果您需要坚持原来的用例,您可以这样做:
//Depending on what you're dealing with: Dictionary<string, List<string>>
Dictionary<string, List<object>> dict = new Dictionary<string, List<object>>{
{"ID", new List<object>{"Id1", "Id2"}},
{"NAME", new List<object>{"True", "False"}}
};
foreach(var v in dict.Keys){
Console.WriteLine($"{v} = {string.Join(",", dict[v])}");
}
//Output:
//ID = Id1,Id2
//NAME = True,False
//根据您处理的内容:字典
Dictionary dict=新字典{
{“ID”,新列表{“Id1”,“Id2”},
{“名称”,新列表{“真”、“假”}
};
foreach(dict.Keys中的var v){
Console.WriteLine($“{v}={string.Join(“,”,dict[v])}”);
}
//输出:
//ID=Id1,Id2
//NAME=True,False
对于此任务来说,这不是一个很好的数据结构。它应该是一个数组。好的,你能用一些代码解释一下吗?List
会更好。表示创建一个单独的类的答案会更好。或者甚至Dictionary
@user584018 GiladGreen似乎在钱上。谢谢@Fabjan,我对Dictionary没有控制权,你的解决方案对我来说是一个解决办法。在Tuple中,我可以放一些类似数据[“Id1”]
?@user584018 Tuple基本上是一个轻量级的结构
,它只包含Item1
和Item2
以及一些方便的方法,如。Create
。如果它确实适合您的需要,您可以使用自定义类/结构或匿名对象。好的,谢谢@法比扬
Dictionary<string,bool> lookup = new Dictionary<string,bool>();
//Depending on what you're dealing with: Dictionary<string, List<string>>
Dictionary<string, List<object>> dict = new Dictionary<string, List<object>>{
{"ID", new List<object>{"Id1", "Id2"}},
{"NAME", new List<object>{"True", "False"}}
};
foreach(var v in dict.Keys){
Console.WriteLine($"{v} = {string.Join(",", dict[v])}");
}
//Output:
//ID = Id1,Id2
//NAME = True,False