Ilookup<TKey, TVal> vs İGrouping<TKey, TVal>
Sorun ILookup<TKey, TVal>
IGrouping<TKey, TVal>
arasındaki farklılıkları dile sahip oldum ve şimdi ben doğru anlamak eğer merak ediyorum. SERİ de bana ToLookup
uzantısı bir yöntem verirken IGrouping
öğeleri dizileri üreterek sorunu bileşik. Daha yakından baktım kadar aynı onlar gibi hissettim.
var q1 =
from n in N
group n by n.MyKey into g
select g;
// q1 is IEnumerable<IGrouping<TKey, TVal>>
Eşdeğerdir:
var q2 = N.GroupBy(n => n.MyKey, n => n);
// q2 is IEnumerable<IGrouping<TKey, TVal>>
Hangi görünüyor gibi:
var q3 = N.ToLookup(n => n.MyKey, n => n);
// q3 is ILookup<TKey, TVal>
Aşağıdaki eşleştirmelerin doğru muyum?
IGrouping<TKey, TVal>
bir değeri aslında elemanları (tek bir element yerine) bir dizi olduğu tek bir grup (anahtarlı sırası yani),KeyValuePair<TKey, TVal>
paraleldirIEnumerable<IGrouping<TKey, TVal>>
(IDictionary<TKey, TVal>
. bir yineleme ne zaman benzer bir dizidirILookup<TKey, TVal>
bir değeri aslında bir dizi öğelerinin bulunduğu 15 ** Daha fazla gibi
CEVAP
Evet, bunların hepsi doğru.
ILookup<TKey, TValue>
ayrıca tüm anahtar/toplama çift olarak (veya yerine) özel anahtarları ararken sadece üzerinde yineleme yapabilirsiniz IEnumerable<IGrouping<TKey, TValue>>
uzanır.
Ben temelde IDictionary<TKey, IEnumerable<TValue>>
olarak *18 düşünüyoruz.
ToLookup
olduğunu aklında bir "şimdi" GroupBy
ertelenmiş ise operation (acil çalıştırma). Gibi olur, yol "Çek ETMENİZ çalıştığı" ne zaman başlıyorsun çekerek IGrouping
s sonucu GroupBy
, okumak tüm verileri her neyse (çünkü yapamazsın geçiş grubu midway ile) iken diğer uygulamalar olabilir mümkün üretmek için bir akış sonucu. (SERİ İtme yapar; Olaylara aynı ETMENİZ beklenir.)
Sözlük için bir koleksiyon başlatıcı&l...
Arama<TKey, TElement>?ne anlamı ...
Al "Değer" İGrouping emlak (...
Ilookup arayüzü vs C...
Nasıl İGrouping değerleri almak için...