代码之家  ›  专栏  ›  技术社区  ›  xeraphim

将多个词典合并为一个[副本]

  •  0
  • xeraphim  · 技术社区  · 6 年前

    这个问题已经有了答案:

    假设我有两个变量,它们都是 Dictionary<int, int> .

    Dictionary<int, int> d1 = new Dictionary<int, int> { ... };
    Dictionary<int, int> d2 = new Dictionary<int, int> { ... };
    

    这两本词典可能包含相同的键。

    我想把它们组合成一个 Dictionary<int, int> combinedDictionary .

    做这件事的优雅方法是什么?

    我试过以下方法:

    var combinedDictionary = d1.Concat(d2.Where(x => !d1.Keys.Contains(x.Key)));
    

    但不幸的是,当试图返回这个组合变量时,我得到了以下错误:

    无法将表达式类型“system.collections.generic.IEnumerable>”转换为返回类型“system.collections.generic.dictionary”。

    有可能像这样安全地投下去吗?

    return (Dictionary<int, int>) combinedDictionary;
    

    提前谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Amy B    6 年前

    concat返回 IEnumerable<KeyValuePair<TKey, TValue>> . 你想调用to dictionary把它转换成字典。

    IEnumerable<KeyValuePair<int, int>> combined = d1.Concat(d2.Where(x => !d1.Keys.Contains(x.Key)));
    Dictionary<int, int> result = combined.ToDictionary(x => x.Key, x => x.Value);