如何使用linq使用默认值填充字典?

时间:2018-06-17 20:00:14

标签: c# linq

Dictionary1有一个字符串实体的键,让我们说“Def3”。

所以看起来像:

Ent1, Def3
Ent3, Def3

Dictionary2具有与另一个字符串相关联的所有实体,该字符串并不重要。

Ent1, Unimportant
Ent2, Unimportant
Ent3, Unimportant

我知道一个默认字符串Def2我想在Dictionary1中为Dictionary1中不存在的每个实体放入Dictionary1。

如何更新Dictionary1,使其看起来像:

Ent1, Def3
Ent2, Def2
Ent3, Def3

Fyi:这些是更大字典的简短示例,因此这种简单的逐个插入在这里不起作用。

更新:好的,让我澄清一下。如果Dictionary2具有一个不是Dictionary1中的键的键,则使用字符串(“Def2”)添加Dictionary2的键。

3 个答案:

答案 0 :(得分:2)

foreach(var key in Dictionary2.Keys.Where(k => !Dictionary1.Keys.Contains(k)))
{
    Dictionary1.Add(key, defaultstring);
}

答案 1 :(得分:1)

你可以使用LINQ来完成这项工作:

var Dictionary3 = Dictionary2.ToDictionary(x => x.Key, 
    x => Dictionary1.ContainsKey(x.Key) ? Dictionary1[x.Key] : "Def2");

答案 2 :(得分:0)

因此,您希望Dictionary2中没有键的所有键都在Dictionary1中作为键添加为值def2。

小步骤:

var allKeysInDict1 = Dictionary1.Keys;
var allKeysInDict2 = Dictionary2.Keys;
var missingKeysInDict1 = allKeysInDict2.Except(allKeysInDict1);
foreach (var missingKey in missingKeysInDict1)
{
    dictionary1.Add(missingKey, def2);
}