SORU
26 AĞUSTOS 2009, ÇARŞAMBA


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?

  1. 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> paraleldir
  2. IEnumerable<IGrouping<TKey, TVal>> (IDictionary<TKey, TVal> . bir yineleme ne zaman benzer bir dizidir
  3. ILookup<TKey, TVal> bir değeri aslında bir dizi öğelerinin bulunduğu 15 ** Daha fazla gibi

CEVAP
26 AĞUSTOS 2009, ÇARŞAMBA


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 IGroupings 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.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • bashirsultani

    bashirsultan

    22 Mart 2010
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013