【发布时间】:2022-01-18 15:17:23
【问题描述】:
我对 c# 有点陌生,想在比较两个字典时识别不具有相同值的键。
我的字典是 dict => KeyValuePair
dict1 => {"a":"False","b":"amazonaws.com","c":"True"}
dict2 => {"a":"True","b":"amazonaws.com","c":"False"}
我想比较两个字典并返回一个变量,该变量将具有 Keys ["a", "c"] 就像上面的示例一样,这些键具有不同的值。
目前我编写的逻辑只会区分其他字典中不存在的键。
Dictionary dictExcept = null;
foreach (IDictionary kvp in dict1.Cast<object>().Where(kvp => !dict2.Contains(kvp)))
{
dictExcept.Add(kvp.Keys, kvp.Values);
}
return dictExcept ;
【问题讨论】:
-
循环通过 dict1.Keys 并为每个键检查
if(dict1[key] != dict2[key]) keyList.Add(key);keyList 是否是List<string>假设两个字典中的键都是字符串类型。 -
我们可以假设两个字典包含完全相同的键(或者你只对那些感兴趣)吗?或者您是否还试图解释存在于一个中但不存在于另一个中的密钥?
-
@Flater 两个字典都有相同的键,只是我们需要识别具有不同值的键
-
不要忘记实例化dictExcept,因为这会抛出异常:“dictExcept.Add”
标签: c# .net dictionary