【发布时间】:2016-10-25 11:51:42
【问题描述】:
我有两个Dictionary<string, Item>s。 Item 有一个公共属性 int Level。
我想组合这两个字典,其中键是唯一的,并且我希望能够在两者上指定级别。
类似
dictionary 1 = 所有级别我可以通过 foreach 循环轻松做到这一点。我也可以使用多个 linq 查询来做到这一点。 但是我似乎无法弄清楚如何进行这个单一的 linq 查询。
编辑-根据您的要求,约翰这里是 foreach 的代码
Dictionary<string, Dictionary<string, Item>> itemDictionary = new Dictionary<string, Dictionary<string, Item>>(); Dictionary<string, Item> items = new Dictionary<string,Item>(); if (itemDictionary.ContainsKey(comboBox.Text)) { foreach (KeyValuePair<string, Item> kvp in itemDictionary[comboBox.Text]) { if (!items.ContainsKey(kvp.Key) && kvp.Value.Level <= int.Parse(textBox.Text)) items.Add(kvp.Key, kvp.Value); } } if (itemDictionary.ContainsKey(comboBox1.Text)) { foreach (KeyValuePair<string, Spell> kvp in itemDictionary[comboBox1.Text]) { if (!items.ContainsKey(kvp.Key) && kvp.Value.Level <= int.Parse(textBox1.Text)) items.Add(kvp.Key, kvp.Value); } } var query = from s in items orderby s.Value.Level select s; foreach (var i in query) listBox.Items.Add(string.Format("{0} {1}", i.Value.Level, i.Key));
【问题讨论】:
-
所以你想要的结果是一个字典,其中包含字典 1 中的所有项目加上字典 2 中的所有项目,谁的键在字典 1 中不存在?
-
当您说“组合”时,您的意思是添加到新字典中,还是将字典 2 中的元素插入字典 1?
-
@scmccart,听起来更像是 1 的 subset 和 2 的 subset。
-
“在键是唯一的地方结合这两个字典”是什么意思?如果两个字典中有相同的键,你想发生什么?如果您可以使用 foreach 向我们展示您当前的代码,我们可能会帮助您...
-
Anthony 是正确的,我正在寻找两个字典的子集