简单的问题:列表的过滤字典

本文关键字:过滤 字典 列表 问题 简单 | 更新日期: 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]);