比较两个键值字典C#

比较两个键值字典C#,c#,dictionary,C#,Dictionary,我有两本字典 1具有字典A(期望值)和字典B 它们都是字典,我想说,如果B.Keys包含来自a的键,比较这两个值并返回true或false。 我怎么写这样的东西: if (B.ContainsKey(A.Keys)) { } var a = new Dictionary<TK,TV>(); var b = new Dictionary<TK,TV>(); var isEquals = a.All(x => { TV v;

我有两本字典

1具有字典A(期望值)和字典B

它们都是字典,我想说,如果B.Keys包含来自a的键,比较这两个值并返回true或false。

我怎么写这样的东西:

if (B.ContainsKey(A.Keys))
        {

        }
var a = new Dictionary<TK,TV>();
var b = new Dictionary<TK,TV>();

var isEquals = a.All(x =>
{
    TV v;
    if (b.TryGetValue(x.Key, out v))
       return x.Value.Equals(v);

    return false;
});
键值示例:

Dictionary<Key, Value> B = {name, "valueb"; last, "smith"}
Dictionary<Key, Value> A = {name, "valuea"; last, "smith"; middle, "m"}

if (name == name) 
{
 if("valueb" == "valuea" )
{
 return false;
}
}
Dictionary B={name,“valueb”;last,“smith”}
字典A={name,“valuea”;last,“smith”;middle,“m”}
if(name==name)
{
如果(“valueb”=“valuea”)
{
返回false;
}
}

扫描一个字典,然后在第二秒内查找,然后进行如下比较:

if (B.ContainsKey(A.Keys))
        {

        }
var a = new Dictionary<TK,TV>();
var b = new Dictionary<TK,TV>();

var isEquals = a.All(x =>
{
    TV v;
    if (b.TryGetValue(x.Key, out v))
       return x.Value.Equals(v);

    return false;
});

if(list1.Any(list2.Contains))
是否要比较所有键并仅在所有匹配键的值匹配时返回true?还是只想比较一个特定的键?@RufusL我想比较几个键,如果它们的值匹配,则返回true。你说的“几个”是什么意思?您是指其中的一个,还是有一个要比较的键列表?还有,您的字典定义是什么样的(键的类型和值的类型)?是否还有其他选项可供使用?当一个值不相等时,循环停止,我希望它继续通过其余的循环。我知道Any将在第一个值处停止。等于,但我希望它仍能继续。@epv,是的,它可以重写为循环,Any是获得a等于b所需的最小值。我更新了答案谢谢@gabba,我没有看到更新,所以可能需要一些时间;if(b.TryGetValue(x.Key,out v)){if(x.Value.ToLower()==v.ToLower()){match=true;}否则{match=false}}否则{match=false}返回匹配;});只查看第一个元素。@epv,因为您通过循环中的最后一行返回。您必须正确地重写循环