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

  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • The White House

    The White Ho

    21 Ocak 2006