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

See*_*een 0 c# linq asp.net

想象我有一个清单

List<String> B

和一本字典

Dictionary<String, int> A

如何使用Linq返回使用B中的键从A过滤的Dictionary < String,int >?

Jon*_*eet 7

简单,Where用于过滤键/值对,然后ToDictionary构建新词典.

var c = A.Where(pair => B.Contains(pair.Key))
         .ToDictionary(pair => pair.Key, pair => pair.Value);
Run Code Online (Sandbox Code Playgroud)

如果你有很多条目,你可能想要创建HashSet<string>第一个:

var strings = new HashSet<string>(B);
var c = A.Where(pair => strings.Contains(pair.Key))
         .ToDictionary(pair => pair.Key, pair => pair.Value);
Run Code Online (Sandbox Code Playgroud)

这样可以更快地测试每个密钥.