首页 / C# / 如何在C#中从此类字典中获取值
如何在C#中从此类字典中获取值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在C#中从此类字典中获取值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2304字,纯文字阅读大概需要4分钟。
内容图文
![如何在C#中从此类字典中获取值](/upload/InfoBanner/zyjiaocheng/677/4f6786c154ef47c3a197b6271fa84f93.jpg)
我想创建字典,因为我知道字典在C#中是key => value,是一个非常类似于key => value(key => value)的字典
目前,我知道我可以做到:
字典< int,int> someVar =新Dictionary< int,int>();
这为我创建了一个key =>值.
创建我想做的事(这只是一个猜测,如果我做错了,请纠正我):
字典< int Dictionray< int,int> someVar = new Dictionary< int,Dictionray< int,int>
现在是有趣的部分,我想做一个,并且在此字典对象YET上只有一个for循环获得所有值,因此看起来像:
foreach (KeyValuePair<int, int> pair in someVar){
//object = base dictionary key
//object2 = nested dictionary key
//object3 = nested dictionary value
}
现在我来自PHP,因此在for循环中很难做到这一点.你有什么想法?因为我是C#和术语词典的新手(即使php数组是字典).
我在C#中知道可以使用这样的for循环:pair.Key和pair.Value.
第二部分是如何将值添加到此类字典中?我知道典型的.add(bla,bla),但是如何为嵌套部分添加值?
解决方法:
反复进行
在C#中,IDictionary< TKey,TValue>实现IEnumerable< KeyValuePair< TKey,TValue>>.因此,您可以遍历类型为IDictionary< TKey,TValue>的实例.使用foreach或Linq查询,并获取数据结构中的每个KeyValuePair.由于在这种情况下TValue本身就是IDictionary,因此您也可以在内部结构上执行此操作:
foreach(var kvp in myDictionary)
{
foreach(var innerKvp in kvp.Value)
{
var myValue = innerKvp.Value
//Logic on myValue
}
}
使用Linq库,可以使用SelectMany非常优雅地获取所有KeyValuePair实例:
myDictionary.SelectMany(kvp => kvp.Value);
SelectMany本质上是使列表列表变平.这个Linq查询说:对于字典中的每个键值对,获取所有内部字典,将它们视为键值对列表,然后将所有这些列表展平.这将返回IEnumerable< KeyValuePair< TKey,TValue>>.
相反,如果您只关心内部字典的值而不关心键,则可以使用IDictionary< TKey,TValue>上的Values属性.返回IEnumerable< TValue>.字典中所有值的然后,我们可以使用SelectMany来获取包含字典词典中所有值的列表:
myDictionary.Values.SelectMany(dict => dict.Values);
阅读有关IDictionary< TKey,TValue>的更多信息. here及更多有关KeyValuePair< TKey,TValue>的信息. here.
新增中
为了向此数据结构添加元素,您必须首先检查内部字典是否为空.假设我们要在以1为键的字典中将3加到以2为键的字典中
var myInnerDictionary = myDictionary.ContainsKey(1) ? myDictionary[1] : (myDictionary[1] = new Dictionary<int, int>());
myInnerDictionary[1][2] = 3;
当然,如果该值已经存在,它将覆盖该位置中的值,因此您可能也要检查该值,或者使用不会覆盖的Add方法.
您还应该了解ToDictionary Linq方法,该方法可以帮助您从其他IEnumerables构造字典.阅读有关的内容here.
内容总结
以上是互联网集市为您收集整理的如何在C#中从此类字典中获取值全部内容,希望文章能够帮你解决如何在C#中从此类字典中获取值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。