LINQ ToDictionary和ToLookup有什么区别?他们似乎也做同样的事情。LINQ ToDictionary和ToLookup有什么区别
98
A
回答
140
字典是1:1映射(每个键映射到单个值),并且字典在事实之后是可变的(可编辑的)。
查找是一个1:多的映射(多个映射;每个键映射到具有该键的值的IEnumerable<>
),并且在接口上没有变化。作为一个方面说明,您可以查询(通过索引器)不存在的关键字,您将得到一个空序列。对字典做同样的事情,你会得到一个异常。
因此:多少条记录共享每个关键字?
一种看它过于简化的方式是,一个Lookup<TKey,TValue>
是大致相当到Dictionary<TKey,IEnumerable<TValue>>
-4
ToDictionary是< TKEY的,TValue>中而ToLookup < TKEY的,T1,T2,T3,...>与IGrouping类似,但枚举保留在内存中。
+2
不太清楚你想用'T1,T2,T3,...'来说明什么; ToLookup和ToDictionary(方法本身)具有几乎相同的API – 2011-04-14 06:00:19
相关问题
- 1. linq vs ToDictionary()和TryGetValue() - 什么更有效?
- 2. LINQ和ADO.net有什么区别
- 3. ToLookup,LINQ和指数
- 4. Linq。所有VS.Exists - 有什么区别?
- 5. 为什么ToLookup和GroupBy不同?
- 6. 这些LINQ查询有什么区别?
- 7. 有什么区别`和$(Bash中有什么区别?
- 8. ==和===有什么区别?
- 9. ==和===有什么区别?
- 10. 有什么区别? :和||
- 11. ==和===有什么区别?
- 12. '=='和'==='有什么区别?
- 13. `&`和`ref`有什么区别?
- 14. 有什么区别:。!和:r!?
- 15. | 0和~~有什么区别?
- 16. Appender和〜有什么区别?
- 17. SqlFunctions和EntityFunctions有什么区别?
- 18. 转换和拆箱有什么区别?
- 19. xtype和别名有什么区别?
- 20. LINQ到SQL ToDictionary
- 21. Linq-to-SQL ToDictionary()
- 22. 有什么区别
- 23. 有什么区别
- 24. 有什么区别?
- 25. 有什么区别?
- 26. 有什么区别?
- 27. 有什么区别
- 28. 有什么区别?
- 29. 有什么区别?
- 30. 有什么区别
也有点类似于groupby? – 2011-04-14 05:53:57
确实有点。 – 2011-04-14 05:58:15
@Carlo:是的,与GroupBy非常相似 - 除了GroupBy是懒惰的,而ToLookup是渴望的。有关可能的实现,请参阅http://msmvps.com/blogs/jon_skeet/archive/2011/01/01/reimplementing-linq-to-objects-part-21-groupby.aspx。 – 2011-04-14 05:58:52