简单的问题:列表的过滤字典
本文关键字:过滤 字典 列表 问题 简单 | 更新日期: 2023-09-27 18:04:00
假设我有一个列表
List<String> B
和字典
Dictionary<String, int> A
我怎么能返回一个Dictionary<<strong>String, int>,从a筛选与B中的键使用Linq?
简单,用Where
过滤键/值对,然后用ToDictionary
建立一个新的字典
var c = A.Where(pair => B.Contains(pair.Key))
.ToDictionary(pair => pair.Key, pair => pair.Value);
如果你有很多条目,你可能想先创建一个HashSet<string>
:
var strings = new HashSet<string>(B);
var c = A.Where(pair => strings.Contains(pair.Key))
.ToDictionary(pair => pair.Key, pair => pair.Value);
滚出我的脑袋,因为我用错了电脑,无法测试。但是你应该明白:
A.Where(val => B.Contains(val.Key)).ToDictionary(val => val.Key, val => val.Value);
如果字典很大,您可能希望枚举B而不是a。
var filtered = B
.Where(key => A.ContainsKey(key))
.ToDictionary(key => key, key => A[key]);