c# – 使用Dictionary中的相同键连接值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 使用Dictionary中的相同键连接值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1555字,纯文字阅读大概需要3分钟。
内容图文
我需要结合2个字典.它们具有不同值的相同密钥(KKK):
Dictionary<string, string> dic1 = ...Load***();
Dictionary<string, string> dic2 = ...Load***();
DIC1:
...
[29] {[RCP, 555501001]}
[30] {[KKK, 04611105012042000120]}
...
DIC2:
...
[49] {[SUM, 85737]}
[50] {[KKK, 04611701040040000180]}
...
联盟:
Dictionary<string, string> dicUnion= dic1.Union(dic2).OrderBy(k => k.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
结果:
ThrowArgumentException: The item with the same key has already been added.
我在union Dictionary中使用相同的键连接值:
...
[29] {[RCP, "555501001"]}
[30] {[KKK, "04611105012042000120 04611701040040000180"]}
[31] {[SUM, "85737"]}
...
解决方法:
如果你真的想在这种情况下使用LINQ(我更喜欢循环):
var dicUnion = dic1.Concat(dic2)
.GroupBy(kv => kv.Key)
.ToDictionary(g => g.Key, g => String.Join(" ", g.Select(kv => kv.Value)));
这将合并两个词典,但不关心公共键或不同的值.
I need to combine 2 dictionary, they have the same key (KKK) with
different values
好的,如果你只想创建一个公共密钥的字典:
var union = from kv1 in dic1
join kv2 in dic2
on kv1.Key equals kv2.Key into keyGroup
where keyGroup.Any()
select new KeyValuePair<string, string>(kv1.Key, string.Join(" ", keyGroup.Select(kv => kv.Value)));
Dictionary<string, string> dicUnion = union.ToDictionary(kv => kv.Key, kv => kv.Value);
但是,不是在两个字典中连接具有相同键的值,而是使用不同的方法.使用查找< TKey,TValue>.例如:
var keyLookup = dic1.Concat(dic2).ToLookup(kv => kv.Key, kv => kv.Value);
现在你可以用值f.e.做你想要的wahtever.创建一个List< string>:
List<string> values = keyLookup["KKK"].ToList();
内容总结
以上是互联网集市为您收集整理的c# – 使用Dictionary中的相同键连接值全部内容,希望文章能够帮你解决c# – 使用Dictionary中的相同键连接值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。