I\'m trying to wrap my head around which data structures are the most efficient and when / where to use which ones.
Now, it could be that I simply just don\'t unders
Two significant differences:
Lookup is immutable. Yay :) (At least, I believe the concrete Lookup class is immutable, and the ILookup interface doesn't provide any mutating members. There could be other mutable implementations, of course.)KeyNotFoundException. (Hence there's no TryGetValue, AFAICR.)They're likely to be equivalent in efficiency - the lookup may well use a Dictionary behind the scenes, for example. Choose between them based on your requirements. Personally I find that the lookup is usually a better fit than a Dictionary, mostly due to the first two points above.
Note that as an implementation detail, the concrete implementation of IGrouping<,> which is used for the values implements IList, which means that it's efficient to use with Count(), ElementAt() etc.