假设我有两个具有以下键值对的字典:
1, "Hello"
2, "Example"
另一个字典如下:
1, "HelloWorld"
2, "Example2"
我想知道这些字典中是否包含子字符串“hello”。 dictionary.ContainsValue("Hello")
将适用于第一个示例,但不适用于第二个示例。如何检查字典中所有值中是否存在子字符串?
假设我有两个具有以下键值对的字典:
1, "Hello"
2, "Example"
另一个字典如下:
1, "HelloWorld"
2, "Example2"
我想知道这些字典中是否包含子字符串“hello”。 dictionary.ContainsValue("Hello")
将适用于第一个示例,但不适用于第二个示例。如何检查字典中所有值中是否存在子字符串?
只需使用Any
to 检查包含“Hello”的第一个值
dictionary.Any(kvp=>kvp.Value.Contains("Hello"))
字典不允许搜索子字符串。要找到它,您需要枚举所有值并检查每个值的子字符串,如 juharr 所建议的那样。然而,这种方法效率极低。仅当您根本不关心搜索性能时才使用它。
如果您需要良好的性能,请使用后缀数组算法。https://en.wikipedia.org/wiki/Suffix_array
dictionary.Values.Any(v => v.Contains("Hello"));
Dictionary 本身不是 IEnumerable,因此它不会应用 LINQ 扩展。