winforms 如何比较字典键中的字符串数组

b09cbbtk  于 2022-12-04  发布在  其他
关注(0)|答案(3)|浏览(140)

我创建了这样的字典:
Dictionary<string, int> dic = new Dictionary<string, int>();
我有一个这样的字符串数组:
string[] str = new string[]{"str1","str2","str3"}
现在我想检查dic键是否包含str的所有元素,而不使用循环。最好的方法是什么?。谢谢。

ca1c2owp

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
dkqlctbz

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也使用循环,只是看不到而已。

gpnt7bae

gpnt7bae3#

如果要比较字典和字符串数组,可以使用SequenceEqual:

bool AreEqual = dic.Keys.SequenceEquals(str);

相关问题