您可以使用类似以下的内容:
Dictionary<string, int> dictionary = new Dictionary<string, int> {{"A", 1}, {"B", 2}, {"C", 3}};
List<string> list = new List<string> {"A","B"};
var result = dictionary.Where(x => list.Contains(x.Key)).ToList();
或者
var result = dictionary.Where(x => list.Contains(x.Key)).ToDictionary(x=>x.Key,x=>x.Value);
ToDictionary(x => x.Key, x => x.Value)
,这样的结果将会是另一个 Dictionary<string, int>
而不是一个 List<KeyValuePair<string, int>>
。 - juharr我可以帮助你翻译,这段内容与编程有关。你需要在不改变 D1 的情况下,确保 L1 中包含 D1 的所有键。有多种方法可以实现这一目标。
如果 D1 的所有键都存在于 L1 中,而且不对 D1 进行任何更改,就可以达到这个目的。
Dictionary<string, string> D2 = new Dictionary<string, string>();
L1.ForEach(x => D2[x] = D1[x]);
或者
var D2 = L1.ToDictionary(el => el, key => D1[key]);
var D2 = D1.Keys.Intersect(L1).ToDictionary(key => key, key => D1[key]);
还有更多,这取决于您的创造力
请注意,对于大列表和字典,这很慢
D1.Where(x => L1.Contains(x.Key))
Where
方法并不会返回一个字典,而只是一系列的键值对。请提供一个 [mcve],以便我们准确地了解您正在做什么。 - Jon Skeet