过滤 Dictionnary<string,string> 在数组 string[] 中没有它们的键

Filter Dictionnary<string,string> that do not have their keys in an array string[]

我有以下对象:

IDictionary<string, string> foo = new Dictionary<string, string>() {
    { "key1", "somerandomvalue" },
    { "key2", "somerandomvalue" },
    { "key3", "somerandomvalue" },
    { "key4", "somerandomvalue" }
}

public static readonly string[] bar = {
    "key1",
    "key3"
}; 

我想过滤 Dictionary foo 并保留 Array 栏中具有键的项目。所以我们会有这样的东西:

bar: {
    { "key1", "somerandomvalue" },
    { "key3", "somerandomvalue" }
}

我尝试了以下但不明白为什么 k 变量被标记为 char 类型

foo
    .Where(k => x.Key.Any(x => bar.Contains(x.ToString())))
    .ToDictionary(k => k.Key, v => v.Value);

您需要通过您的密钥收集 bar.

Where 函数中使用 Any
foo.Where(x=> bar.Any(b => b == x.Key)).ToDictionary(k => k.Key, v => v.Value);