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