c#-4.0 - 设置 IEnumerable KeyValuePair

标签 c#-4.0 foreach ienumerable keyvaluepair

我有 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);
}

现在您只循环 newTreesWhere(...)_myObject.Trees 中查找相应的元素没有显式循环。请注意,调用 First()假设 newTrees 中的任意键已存在于 _myObject.Trees并且它只存在一次。

希望对您有帮助!

关于c#-4.0 - 设置 IEnumerable KeyValuePair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18079510/

相关文章:

c# - 递增自定义性能计数器 .net 4.0 Windows 7

c# - 如何实现子类中必须覆盖的常量字段.net 4

javascript - 在 PHP foreach 循环中重复 Javascript 函数

c# - 检查 IEnumerable<T> 是否有具有重复属性的项目

c# - 将 .0000 解析为 0 C#

c# - 在 C# 中创建可重用代码模块(例如 C++ 样式类、 header )

grails + 获取 g :each 中的下一个值

php foreach循环重复项

C#:从 IEnumerable<IEnumerable<T>> 获取不同的 T

c# - 检查 IEnumerable 类型集合中的属性