我创建了这样的字典:
Dictionary<string, int> dic = new Dictionary<string, int>();
我有一个像这样的字符串数组:
string[] str = new string[]{"str1","str2","str3"}
现在我想检查dic
键是否包含str
的所有元素而不使用循环。做这个的最好方式是什么?。感谢。
答案 0 :(得分:2)
如果您想知道所有词典是否包含所有键:
bool allContainsAll = dic.All(dictonary => str.All(dictonary.ContainsKey));
如果您想知道字符串是否在任何字典键中:
var allDictKeys = new HashSet<string>(dic.SelectMany(d => d.Keys));
bool allContainsAll = str.All(allDictKeys.Contains);
请注意,LINQ也使用循环,你只是看不到它们。
答案 1 :(得分:2)
这是linq的解决方案,至少没有可见的循环,但内部linq使用循环
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("str1", 1);
dic.Add("str2", 2);
dic.Add("str3", 3);
string[] str = new string[] { "str1", "str2", "str3" };
bool ContainsAll = str.All(x => dic.ContainsKey(x)); //true