6

假设我有两个具有以下键值对的字典:

1, "Hello"
2, "Example"

另一个字典如下:

1, "HelloWorld"
2, "Example2"

我想知道这些字典中是否包含子字符串“hello”。
dictionary.ContainsValue("Hello")将适用于第一个示例,但不适用于第二个示例。如何检查字典中所有值中是否存在子字符串?

4

3 回答 3

13

只需使用Anyto 检查包含“Hello”的第一个值

dictionary.Any(kvp=>kvp.Value.Contains("Hello"))
于 2013-03-16T04:07:22.243 回答
1

字典不允许搜索子字符串。要找到它,您需要枚举所有值并检查每个值的子字符串,如 juharr 所建议的那样。然而,这种方法效率极低。仅当您根本不关心搜索性能时才使用它。
如果您需要良好的性能,请使用后缀数组算法。https://en.wikipedia.org/wiki/Suffix_array

于 2013-03-16T04:24:31.513 回答
0
dictionary.Values.Any(v => v.Contains("Hello"));

Dictionary 本身不是 IEnumerable,因此它不会应用 LINQ 扩展。

于 2013-03-16T04:08:13.150 回答