我创建了这样的字典:Dictionary<string, int> dic = new Dictionary<string, int>();我有一个这样的字符串数组:string[] str = new string[]{"str1","str2","str3"}现在我想检查dic键是否包含str的所有元素,而不使用循环。最好的方法是什么?。谢谢。
Dictionary<string, int> dic = new Dictionary<string, int>();
string[] str = new string[]{"str1","str2","str3"}
dic
str
ca1c2owp1#
这是一个使用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(dic.ContainsKey); //true
dkqlctbz2#
如果要了解是否所有字典都包含所有键:
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也使用循环,只是看不到而已。
gpnt7bae3#
如果要比较字典和字符串数组,可以使用SequenceEqual:
bool AreEqual = dic.Keys.SequenceEquals(str);
3条答案
按热度按时间ca1c2owp1#
这是一个使用linq的解决方案,至少没有可见的循环,但是内部linq使用循环
dkqlctbz2#
如果要了解是否所有字典都包含所有键:
如果您想知道字符串是否在任何字典键中:
请注意,LINQ也使用循环,只是看不到而已。
gpnt7bae3#
如果要比较字典和字符串数组,可以使用SequenceEqual: