Gil*_*lla 6 c# linq linq-to-objects dictionary list
我有
List<string> selectedOptions;
Dictionary<string,string> masterList;
Run Code Online (Sandbox Code Playgroud)
masterList由Keys组成,它们是值的超集selectedoptions.现在,我想提取selectedOptions和之间相交键的所有值masterList.
如何构建LINQ查询?
spe*_*der 12
IEnumerable<KeyValuePair<string,string>> results =
dic.Join(keys, d => d.Key, x => x, (a, b) => a);
Run Code Online (Sandbox Code Playgroud)
当然
var results2 = keys.Select(k => new {key = k, value = dic[k]});
Run Code Online (Sandbox Code Playgroud)
但如果钥匙不存在,这将爆炸.
你可以用一个Where(k => dic.ContainsKey(k))条款解决这个问题:
var results3 = keys
.Where(k => dic.ContainsKey(k))
.Select(k => new {key = k, value = dic[k]});
Run Code Online (Sandbox Code Playgroud)
在拖网Linq源之后,我认为最后一种方法可能效率最高.执行连接会强制linq Lookup在连接中涉及的一个集合上创建(实际上是多条目哈希表).因为我们已经有了一个提供与a相同的查找性能的Dictionary Lookup,所以构建一个Lookup是多余的.
| 归档时间: |
|
| 查看次数: |
9298 次 |
| 最近记录: |