我有一个方法,只需要运行一次。如果满足长期条件。例如:
if (!("a" == "a" && "b" == "b"))
RunMethod();
主要问题是我无法预先知道字典可以有多少个键。并且在什么表达之前可能是否定符号。在此示例中,否定符号是字典的值。
var dict = new Dictionary<string, bool>
{
{ "a", false },
{ "b", true }
};
带有一个if
的选项不太适合,因为该方法只需要运行一次:
if(dict.ContainsKey("a"))
RunMethod();
UPD:
var dictFeature = new Dictionary<string, string>
{
{ "a", "a" },
{ "b", "a" }
};
var dict = new Dictionary<string, bool>
{
{ "a", false },
{ "b", true }
};
foreach (var i in dict)
{
if(dictFeature.ContainsKey(i.Key))
RunMethod();
}
但是,如果您这样编写,则该方法将被执行多次,就像字典中的键一样。
答案 0 :(得分:2)
为什么@ 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();
}
或更老的学校:
bool needsToExecute = false;
foreach (var i in dict)
{
if(dictFeature.ContainsKey(i.Key))
{
needsToExecute = true;
break;
}
}
if(needsToExecute)
RunMethod();
答案 1 :(得分:1)
如果仅想在dictFeature中存在dict中的所有键的情况下运行该操作,则:
if(dict.Keys.All(key => dictFeature.ContainsKey(key)))
RunMethod();