首页 > 解决方案 > 如何在 vb.net 中的字典列表中检查值?

问题描述

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

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

(Dict_List(0).ContainsValue(value) or Dict_List(1).ContainsValue(value) or Dict_List(2).ContainsValue(value))=False

理想情况下,如果该值不在其中一个字典中,以及其他几个条件;然后代码将添加另一个字典。我知道 foreach 在这种情况下可能会起作用,但是单个表达式在运行时会更快,并且很高兴知道这只是一种最佳实践。

标签: vb.netlistdictionaryforeachcontains

解决方案


我想到了两个 LINQ 选项:

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

或者:

If Dict_List.Any(Function(d) d.ContainsValue(value)) Then

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


推荐阅读