如何在vb.net中检查字典列表中的值?

如何在vb.net中检查字典列表中的值?,vb.net,list,dictionary,foreach,contains,Vb.net,List,Dictionary,Foreach,Contains,如果列表中的任何字典包含特定值,那么哪个表达式可以返回布尔值 想象一下,但不必单独引用列表中的每个项目: Dict_List0.ContainsValuevalue或Dict_List1.ContainsValuevalue或Dict_List2.ContainsValuevalue=False 理想情况下,如果该值不在其中一个字典中,以及其他几个条件中;然后代码将添加另一个字典。我知道foreach在这种情况下可能会起作用,但单个表达式在运行时会更快,知道这一点作为最佳实践也很好。我想到了两个

如果列表中的任何字典包含特定值,那么哪个表达式可以返回布尔值

想象一下,但不必单独引用列表中的每个项目:

Dict_List0.ContainsValuevalue或Dict_List1.ContainsValuevalue或Dict_List2.ContainsValuevalue=False
理想情况下,如果该值不在其中一个字典中,以及其他几个条件中;然后代码将添加另一个字典。我知道foreach在这种情况下可能会起作用,但单个表达式在运行时会更快,知道这一点作为最佳实践也很好。

我想到了两个LINQ选项:

If Dict_List.SelectMany(Function(d) d.Values).Contains(value) Then
或:


第一个选项从每个字典中获取值,并将它们连接到一个列表中,然后检查该列表中是否有匹配的值。第二个选项单独检查每个字典,如果任何单个检查返回True,则返回True。作为LINQ,如果找到匹配项,它们都避免无意义地检查其余值。

您应该检查字典是否包含键,而不是特定值。无论如何,请参阅LINQ的扩展方法:Any、All、Where、FirstOrDefault……谢谢!我发现第二个更有用,因为我可以在表达式中引用列表中的所有项,就好像只有一个一样。但这正是我需要的,谢谢!
If Dict_List.Any(Function(d) d.ContainsValue(value)) Then