我有 2 IEnumerable<KeyValuePair<TreeType, int>>
收藏:
- _myObject.Trees - 包含所有值为 0 的 TreeType。
- newTrees - 可以包含任意数量的具有任意 int 值的 TreeType。
现在我想做的很简单,但我已经尝试了几个小时,但无法完全获得所需的结果。我想将 newTrees 值插入到 _myobject.Trees 集合中,这样 _myObject.Trees 值就不会全部为 0。
我得到的最接近的如下。我知道为什么这不起作用,但我还是看不到解决方案。
foreach (var tree in _myObject.Trees)
{
foreach (var newTree in newTrees)
{
if (tree.Key == newTree.Key)
{
_myObject.Trees[tree] =
new KeyValuePair<TreeType, int>(newTree.Key, newTree.Value);
break;
}
}
}
非常感谢您的帮助,谢谢!
最佳答案
您可以尝试如下操作吗:
foreach (var tree in newTrees)
{
var keyValuePair = _myObject.Trees.Where(s => s.Key == tree.Key).First();
keyValuePair = new KeyValuePair<Tree, int>(tree.Key, tree.Value);
}
现在您只循环 newTrees
和 Where(...)
在 _myObject.Trees
中查找相应的元素没有显式循环。请注意,调用 First()
假设 newTrees
中的任意键已存在于 _myObject.Trees
并且它只存在一次。
希望对您有帮助!
关于c#-4.0 - 设置 IEnumerable KeyValuePair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18079510/