我有一个词典列表:
List<Dictionary<string, int>> listDic = new List<Dictionary<string, int>>();
如何验证listDic是否包含带键==“apple”的词典,例如?
答案 0 :(得分:9)
您可以在外部字典上使用.Any
,在内部字典上使用.ContainsKey
。像这样:
var containsApple = listDic.Any(x => x.ContainsKey("Apple"));
如果true
中的任何一个或多个词典包含密钥listDic
,则会产生"Apple"
。
基本上,你从整体问题开始:
如何验证listDic是否包含带键的字典==“apple”
将其分解为两个更小,更简单,更容易找到的Google问题:
第一个涉及在字典上调用.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;
}