1

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

我想要两个执行 linq 查询以从 d1 中选择所有元素d2..ContainsKey(d1.key);

4

5 回答 5

4
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);
于 2013-03-18T09:17:25.573 回答
3

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

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]);
于 2013-03-18T09:19:10.550 回答
2
from rec in d1 where d2.ContainsKey(rec.key) select d1
于 2013-03-18T09:17:23.653 回答
1

试试这个:

var values = d1.Where(kvp => d2.ContainsKey(kvp.Key)).Select(kvp => kvp.Value);
于 2013-03-18T09:17:27.863 回答
1
d1.Keys.Intersect(d2.Keys).ToDictionary( x => x, x => d1[x]);

或者

d1.Keys.Where(k => d2.ContainsKey(k)).ToDictionary( x => x, x => d1[x]);
于 2013-03-18T09:27:41.237 回答