5 Eylül 2018 Çarşamba

Linq Grouping Data ToLookup metodu

Giriş
ToList(), ToDictonary() metodları gibidir. Bir veri yapısı döndürür. Döndürülen veri yapısı bir multimap'tir. Veri yapısı ILookup arayüzünden kalıtır.

Yani ToDictionary() metodu bir key-value pair döndürürken, ToLookup() metodu bir key-value list döndürür.

Örnek
Şöyle yaparız. string'in ilk harfine yani ismin ilk harfine göre gruplama yapılıyor. Daha sonra J ile başlayan kaç isim var diye çıktı alınabiliyor.
namespace LookupSample
{
  using System;
  using System.Collections.Generic;
  using System.Linq;

  class Program
  {
    static void Main(string[] args)
    {
      List<string> names = new List<string>();
      names.Add("Smith");
      names.Add("Stevenson");
      names.Add("Jones");

      ILookup<char, string> namesByInitial = names.ToLookup(n => n[0]);

      // count the names
      Console.WriteLine("J's: {0}", namesByInitial['J'].Count());
      Console.WriteLine("S's: {0}", namesByInitial['S'].Count());
      Console.WriteLine("Z's: {0}", namesByInitial['Z'].Count());
    }
  }
}
Örnek
Şöyle yapraız.
List<Dictionary<string, byte[]>> commonFileCollection = ...;
{
  Dictionary<string, Byte[]> _dickeyValuePairs = 
   commonFileCollection.SelectMany(x=> x)alo
    .ToLookup(x=> x.Key, x=> x.Value); //ILookup<string, IEnumerable<byte[]>>
}


Hiç yorum yok:

Yorum Gönder