¿Cuál es la diferencia entre LINQ ToDictionary y ToLookup? Parecen hacer lo mismo.Cuál es la diferencia entre LINQ ToDictionary y ToLookup
Respuesta
Un diccionario es un mapa 1: 1 (cada clave está asignada a un solo valor), y un diccionario es mutable (editable) después del hecho.
Una búsqueda es un mapa 1: muchos (multi-mapa, cada clave se asigna a un IEnumerable<>
de los valores con esa clave), y no hay cambios en la interfaz ILookup<,>
.
Como nota al margen, puede consultar una búsqueda (a través del indexador) en una clave que no existe, y obtendrá una secuencia vacía. Haz lo mismo con un diccionario y obtendrás una excepción.
Entonces, ¿cuántos registros comparten cada clave?
Una manera excesivamente simplificada de verlo es que un Lookup<TKey,TValue>
es más o menos comparable a un ToDictionary Dictionary<TKey,IEnumerable<TValue>>
es < TKey, TValue> mientras ToLookup < TKey, T1, T2, T3, ...> es similar a IGrouping pero la enumeración permanece en la memoria.
No estoy seguro de lo que intenta ilustrar con 'T1, T2, T3, ... '; ToLookup y ToDictionary (los métodos mismos) tienen prácticamente la misma API –
- 1. Linq: ¿Cuál es la diferencia entre Seleccionar y Dónde
- 2. ¿Cuál es la diferencia entre Linq, DLinq y XLinq?
- 3. En Linq, ¿cuál es la diferencia entre .FirstOrDefault y .SingleOrDefault
- 4. Cuál es la diferencia entre "LINQ to Entities", "LINQ to SQL" y "LINQ to Dataset"
- 5. Linq-to-SQL ToDictionary()
- 6. ¿Cuál es la diferencia entre {0} y ""?
- 7. Cuál es la diferencia entre = y: =
- 8. ¿Cuál es la diferencia entre .ToString (+) y ""
- 9. Cuál es la diferencia entre $ (...) y `...`
- 10. ¿cuál es la diferencia entre:.! y: r !?
- 11. ¿Cuál es la diferencia entre ".equals" y "=="?
- 12. ¿Cuál es la diferencia entre dict() y {}?
- 13. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 14. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 15. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 16. ¿Cuál es la diferencia entre + = y = +?
- 17. ¿Cuál es la diferencia entre " " y ""?
- 18. Cuál es la diferencia entre $ y jQuery
- 19. ¿Cuál es la diferencia entre estas consultas LINQ?
- 20. C# Linq Result ToDictionary Help
- 21. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 22. Diferencia entre Suma y Agregado en LINQ
- 23. Cuál es la diferencia entre la función() {}() y la función() {}()
- 24. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 25. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 26. diferencia entre Seleccionar y donde en LINQ
- 27. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 28. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 29. ¿Cuál es la diferencia entre el colado y la coerción?
- 30. ¿cuál es la diferencia entre el complemento y la biblioteca?
¿También algo similar a un groupby? –
Algo, de hecho. –
@Carlo: Sí, bastante similar a GroupBy, excepto que GroupBy es flojo, mientras que ToLookup está ansioso. Consulte http://msmvps.com/blogs/jon_skeet/archive/2011/01/01/reimplementing-linq-to-objects-part-21-groupby.aspx para una posible implementación. –