当关键字包含在第二个字典中时,从字典中选择所有元素



我有两个字典:Dictionary<DateTime, decimal> d1;Dictionary<DateTime, decimal> d2;

我想要两个执行linq查询,从d1中选择d2..ContainsKey(d1.key);

所在的所有元素
var results = d1.Where(x => d2.ContainsKey(x.Key)).Select(x => x.Value).ToList();

或者根据所选数据创建另一个字典:

var results = d1.Where(x => d2.ContainsKey(x.Key)).ToDictionary(x => x.Key, x => x.Value);

如果您想要十进制值作为结果:

IEnumerable<decimal> result = d2.Keys.Intersect(d1.Keys).Select(k => d1[k]);

如果你想从十字路口买一本新字典:

Dictionary<DateTime, decimal> result = d2.Keys.Intersect(d1.Keys)
                                              .ToDictionary(k => k, k => d1[k]);
from rec in d1 where d2.ContainsKey(rec.key) select d1

试试这个:

var values = d1.Where(kvp => d2.ContainsKey(kvp.Key)).Select(kvp => kvp.Value);
d1.Keys.Intersect(d2.Keys).ToDictionary( x => x, x => d1[x]);

d1.Keys.Where(k => d2.ContainsKey(k)).ToDictionary( x => x, x => d1[x]);

最新更新