LINQ ToDictionary ve ToLookup arasındaki fark nedir? Aynı şeyi yapıyor gibi görünüyorlar.
LINQ ToDictionary ve ToLookup arasındaki fark nedir? Aynı şeyi yapıyor gibi görünüyorlar.
Yanıtlar:
Sözlük 1: 1 haritadır (her tuş tek bir değere eşlenir) ve bir sözlük, gerçeğin ardından değiştirilebilir (düzenlenebilir).
Bir arama 1: çok haritadır (çoklu harita; her anahtar IEnumerable<>
bu anahtarla değerlerden birine eşlenir ) ve ILookup<,>
arayüzde mutasyon yoktur .
Bir yan not olarak, var olmayan bir anahtarda bir arama (indeksleyici aracılığıyla) sorgulayabilir ve boş bir sıra alırsınız. Aynı şeyi bir sözlükle yapın ve bir istisna elde edersiniz.
Yani: her anahtarı paylaşan kaç kayıt var?
Aşırı derecede basitleştirilmiş bir bakış açısı Lookup<TKey,TValue>
, a'nın kabaca birDictionary<TKey,IEnumerable<TValue>>
ILookup<,>
bir KeyNotFoundException
. Rx uygulaması bir atar KeyNotFoundException
.
Dictionary<TKey, IEnumerable<TValue>>
bir liste sözlüğü olarak tanımlanabilir. Demek ToLookup()
ki: bana bir liste sözlüğü ver. Bazı nedenlerden dolayı, bu şekilde tarif edildiğini duymak, kafamın içine girmeme yardımcı oldu.
ToDictionary <TKey, TValue> iken ToLookup <TKey, T1, T2, T3, ...> IGrouping'e benzer ancak numaralandırma bellekte kalır.
T1, T2, T3, ...
; ToLookup ve ToDictionary (yöntemlerin kendileri) hemen hemen aynı API'ye sahiptir