查找Dictionary <string,object>中的所有值,其中key包含子字符串

kit*_*kun 4 c# linq dictionary

假设我有一个字典声明如下:

Dictionary<string, IData> map;
Run Code Online (Sandbox Code Playgroud)

我希望使用包含特定子字符串的键获取所有值,例如函数

public IEnumerable<IData> GetContains(string pattern) {}
Run Code Online (Sandbox Code Playgroud)

我想了解如何使用匹配模式的密钥列表

var result = mapData.Keys.Where(a => a.Contains(pattern)).ToArray()
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何重用返回的键来获取一个查询中的所有相应值.

Sel*_*enç 12

你可以用Where你的Dictionary,而不是Keys收集,然后用得到的值Select:

mapData.Where(kvp => kvp.Key.Contains(pattern)).Select(kvp => kvp.Value);
Run Code Online (Sandbox Code Playgroud)