C# 如何将字典转换为一个条件

C# 如何将字典转换为一个条件,c#,dictionary,C#,Dictionary,我有一个只需运行一次的方法。如果满足长期条件。例如: if (!("a" == "a" && "b" == "b")) RunMethod(); 主要的问题是,我无法预先知道一本字典可以有多少键。在这之前,什么表达可能是否定符号,也可能不是否定符号。在本例中,否定符号是字典的值 var dict = new Dictionary<string, bool> { { "a", false }, { "b", true } }; UPD: v

我有一个只需运行一次的方法。如果满足长期条件。例如:

 if (!("a" == "a" && "b" == "b"))
    RunMethod();
主要的问题是,我无法预先知道一本字典可以有多少键。在这之前,什么表达可能是否定符号,也可能不是否定符号。在本例中,否定符号是字典的值

var dict = new Dictionary<string, bool>
{
    { "a", false },
    { "b", true }
};
UPD:

var dictFeature=新字典
{
{“a”,“a”},
{“b”,“a”}
};
var dict=新字典
{
{“a”,false},
{“b”,对}
};
foreach(dict中的var i)
{    
if(dictFeature.ContainsKey(i.Key))
RunMethod();
}

但是如果您这样写,那么该方法将执行多次,执行次数与字典中的键数相同。

为什么不按照@V0ldek的建议对LINQ执行以下操作:

var dict = new Dictionary<string, bool>
{
    { "a", false },
    { "b", true }
};
var dictFeature = new Dictionary<string, string>
{
    { "a", "a" },
    { "b", "a" }
};

var dict = new Dictionary<string, bool>
{
    { "a", false },
    { "b", true }
};

if(dict.Any(kv => dictFeature.ContainsKey(kv.Key))
{
    RunMethod();
}

为什么不按照@V0ldek的建议使用LINQ执行以下操作:

var dictFeature = new Dictionary<string, string>
{
    { "a", "a" },
    { "b", "a" }
};

var dict = new Dictionary<string, bool>
{
    { "a", false },
    { "b", true }
};

if(dict.Any(kv => dictFeature.ContainsKey(kv.Key))
{
    RunMethod();
}

如果您只想在dict功能中存在dict中的所有键时运行该操作:

if(dict.Keys.All(key => dictFeature.ContainsKey(key)))
    RunMethod();

如果您只想在dict功能中存在dict中的所有键时运行该操作:

if(dict.Keys.All(key => dictFeature.ContainsKey(key)))
    RunMethod();

您提供的代码片段没有多大意义。第一个条件中的条件的计算结果始终为false。你需要给出一个更好的例子,更清楚地说明你的目标是什么。那么你想基于字典值构建一个if语句吗?如果是这样的话,它们将与什么进行比较?每个字典键将检查另一个字典中是否存在该键,并相应地返回true或false,并且假设总是存在或不存在否定运算符。可能添加一个真实的示例。你说的是至少两本字典,我们在这里只能看到一本。你试了什么?怎么会出错?好的,我换了新的。我添加了第一个dict。您提供的代码片段没有多大意义。第一个条件中的条件的计算结果始终为false。你需要给出一个更好的例子,更清楚地说明你的目标是什么。那么你想基于字典值构建一个if语句吗?如果是这样的话,它们将与什么进行比较?每个字典键将检查另一个字典中是否存在该键,并相应地返回true或false,并且假设总是存在或不存在否定运算符。可能添加一个真实的示例。你说的是至少两本字典,我们在这里只能看到一本。你试了什么?怎么会出错?好的,我换了新的。我加了第一条。我想你要的是
Any
,而不是
All
。我想你要的是
Any
,而不是
All