如何验证字典列表是否包含具有特定键的字典 - C#

时间:2015-03-04 13:38:10

标签: c# dictionary

我有一个词典列表:

List<Dictionary<string, int>> listDic = new List<Dictionary<string, int>>();

如何验证listDic是否包含带键==“apple”的词典,例如?

5 个答案:

答案 0 :(得分:9)

您可以在外部字典上使用.Any,在内部字典上使用.ContainsKey。像这样:

var containsApple = listDic.Any(x => x.ContainsKey("Apple"));

如果true中的任何一个或多个词典包含密钥listDic,则会产生"Apple"

基本上,你从整体问题开始:

  

如何验证listDic是否包含带键的字典==“apple”

将其分解为两个更小,更简单,更容易找到的Google问题:

  1. 如何验证字典是否包含给定密钥?
  2. 如何验证集合中的任何一个或多个元素是否符合条件?
  3. 第一个涉及在字典上调用.ContainsKey,第二个涉及在集合上调用.Any。之后,你只需将两者结合起来。

答案 1 :(得分:6)

如果您可以使用linq,则可以使用.Any()

执行此操作
bool containsKey = listDic.Any(x => x.ContainsKey("apple"));

这将逐个检查集合,直到找到该键。如果在第二个项目上找到了密钥,则.Any()仅迭代两个项目,而不是整个集合。

答案 2 :(得分:2)

尝试使用LINQ

bool result = listDic.Any(x => x.ContainsKey("Apple"));

答案 3 :(得分:1)

bool contains = listDic.Any(x => x.ContainsKey("apple"));

答案 4 :(得分:1)

List<Dictionary<string, int>> listDic = new List<Dictionary<string, int>>();
            Dictionary<string, int> di = new Dictionary<string, int>();
            di.Add("apple", 1);
            listDic.Add(di);

            di = new Dictionary<string, int>();
            di.Add("mango", 2);

            di = new Dictionary<string, int>();
            di.Add("grapes", 3);

            Dictionary<string, int> item = listDic.Where(c => c.ContainsKey("apple")).FirstOrDefault();
            if (item != null)
            {
                string key = item.FirstOrDefault().Key;
                int value = item.FirstOrDefault().Value;
            }