我有
List<string> selectedOptions;
Dictionary<string,string> masterList;
masterList
钥匙包括,这是在值的超集selectedoptions
。 现在,我想提取所有的值之间的交叉键selectedOptions
和masterList
。
如何将LINQ查询被陷害?
我有
List<string> selectedOptions;
Dictionary<string,string> masterList;
masterList
钥匙包括,这是在值的超集selectedoptions
。 现在,我想提取所有的值之间的交叉键selectedOptions
和masterList
。
如何将LINQ查询被陷害?
IEnumerable<KeyValuePair<string,string>> results =
dic.Join(keys, d => d.Key, x => x, (a, b) => a);
或课程
var results2 = keys.Select(k => new {key = k, value = dic[k]});
但如果不存在键,这将炸弹。
你可以用修复此Where(k => dic.ContainsKey(k))
条款:
var results3 = keys
.Where(k => dic.ContainsKey(k))
.Select(k => new {key = k, value = dic[k]});
拖网LINQ的源之后,我认为最后的方法可能是最有效的。 做一个联手LINQ做一个Lookup
在参与加入收藏之一(实际上是多次往返哈希表)。 眼看因为我们已经有了一个解释它提供了相同的查找性能的Lookup
,构建Lookup
是多余的。