Lookup<TKey, TElement> vs Dictionary<TKey, List<TValue>> para chaves duplicadas em C#
Use ToLookup quando você agrupa uma vez e só lê: é imutável, retorna uma sequência vazia para chaves ausentes, aceita chaves null e mantém a ordem em que as chaves aparecem pela primeira vez. Use Dictionary<TKey, List<TValue>> quando os grupos mudam depois da construção ou atravessam uma fronteira JSON.