2011-04-14 11 views

Respuesta

140

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>>

+4

¿También algo similar a un groupby? –

+1

Algo, de hecho. –

+19

@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. –

-4

es < TKey, TValue> mientras ToLookup < TKey, T1, T2, T3, ...> es similar a IGrouping pero la enumeración permanece en la memoria.

+2

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 –

Cuestiones relacionadas