20.06.16 21:22
LINQ - Özel Dizilim (Custom Sequence) Örneği
    LINQ ile kendi tanımladığınız işlemler sonucu oluşturulacak dizilimler elde edebiliriz.
 
Bu örnek, iki tamsayı dizisinin skaler çarpımını (her iki dizinin aynı sıradaki elemanlarının çarpımının toplamını) bulur. 
 
    Örnekte bu işlem için  IEnuberable<int>  arayüzüne yeni bir yöntem ekleyen bir genişleme yöntemi ve bu 
    bu yönteme gönderilen, yapılacak işlemi bildirmek için Lambda 
İfadesi şeklinde tanımlanan bir isimsiz fonksiyondan yararlanılmaktadır.
 
    İsimsiz fonksiyonda kullanılan yield komutu,  IEnumerable  arayüzünü (Enumerable = Sayılabilir) uygulayan
    ve dolayısıyla  GetEnumerator  yöntemine sahip sınıflarda koleksiyonun her bir elemanı çağırıldığında gerekli
    işlemi yaptıktan sonra işlem sonucunu döndürmek ve tekrar kendi döngüsüne dönülmesi için kullanılır.
 
    http://Bu örneği daha iyi anlayabilmek için  Genişletme Yöntemleri  ve  Lambda İfadeleri  yazılarımı inceleyebilirsiniz // Bu sınıf IEnumerable<int> arayüzünü genişleten bir yöntem tanımlar.
public static class OzelSilsileIslecleri
{
    public static IEnumerable<int> Katistir(this IEnumerable<int> birinci,
                                                 IEnumerable<int> ikinci,
                                                 Func<int, int, int> fonksiyon)
    {
        IEnumerator<int> Sayici1 = birinci.GetEnumerator();
        IEnumerator<int> Sayici2 = ikinci.GetEnumerator();
        while (Sayici1.MoveNext() && Sayici2.MoveNext())
        {
            yield return fonksiyon(Sayici1.Current, Sayici2.Current);
        }
    }
}
Console.ReadLine();
 int[] VectorA = { 0, 2, 4, 5, 6 };
int[] VectorB = { 1, 3, 5, 7, 8 };
IEnumerable CarpimDizisi = VectorA.Katistir(VectorB, (a, b) => a * b);
int SkalerCarpim = CarpimDizisi.Sum();
Console.Write("Çarpım dizisi : ");
foreach (int Carpim in CarpimDizisi)
{
    Console.Write(Carpim);
    Console.Write(" ");
}
Console.WriteLine();
Console.WriteLine("Vektörlerin skaler çarpımı = {0}", SkalerCarpim ); Console.ReadLine(); 
Örneğin çıktısı şöyle olacaktır :
 Çarpım dizisi : 0 6 20 35 48 
Vektörlerin skaler çarpımı = 109
 Kaynak: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b Diğer LINQ Makaleleri: LINQ Örnekleri makalelerinde kullanılan verikaynağı LINQ (Language Integrated Query - Dile Entegre Edilmiş Sorgu) Nedir? LINQ Sağlayıcıları (LINQ Providers) LINQ Yöntem Sözdizimi (LINQ Method Syntax) LINQ - Temel İşlemler - Bir Veri Kaynağı Bildirme ve Seçme (From ve Select) LINQ - Temel İşlemler - Süzme (Filtering) LINQ - Temel İşlemler - Sıralama (Ordering) LINQ - Temel İşlemler - Gruplama (Grouping) LINQ - Temel İşlemler - Birleştirme (Joining) LINQ - Deferred Execution - Ertelenmiş Çalıştırma LINQ - Immediate Execution - Anında Çalıştırma LINQ - Query Reuse - Sorgunun Yeniden Kullanımı LINQ - Kısıtlama (Restriction) Kullanım Örnekleri LINQ - Yansıtma (Projection) - Select Kullanım Örnekleri LINQ - Yansıtma (Projection) - SelectMany Kullanım Örnekleri LINQ - Bölümleme (Partitioning) Örnekleri LINQ - Sıralama (Ordering) Örnekleri LINQ - Gruplama (Grouping) Örnekleri LINQ - Küme (Set) Örnekleri LINQ - Dönüşüm (Conversion) Örnekleri LINQ - Eleman (Element) Seçimi Örnekleri LINQ - Oluşturma (Generation) Örnekleri LINQ - Miktar Belirleyiciler (Quantifiers) Örnekleri LINQ - Yığın (Aggregate) Örnekleri LINQ - Birleştirme (Join) İşlemleri LINQ - Özel Dizilim (Custom Sequence) Örneği  (Bu makale) LINQ - Concat ve SequenceEqual İle Örnekle r
Ekleyen: canora
Değiştiren: canora
10.04.16 23:42
LINQ - Özel Dizilim (Custom Sequence) Örneği
    LINQ ile kendi tanımladığınız işlemler sonucu oluşturulacak dizilimler elde edebiliriz.
 
Bu örnek, iki tamsayı dizisinin skaler çarpımını (her iki dizinin aynı sıradaki elemanlarının çarpımının toplamını) bulur. 
 
    Örnekte bu işlem için  IEnuberable<int>  arayüzüne yeni bir yöntem ekleyen bir genişleme yöntemi ve bu 
    bu yönteme gönderilen, yapılacak işlemi bildirmek için Lambda 
İfadesi şeklinde tanımlanan bir isimsiz fonksiyondan yararlanılmaktadır.
 
    İsimsiz fonksiyonda kullanılan  yield  komutu,  IEnumerable  arayüzünü (Enumerable = Sayılabilir) uygulayan
    ve dolayısıyla  GetEnumerator  yöntemine sahip sınıflarda koleksiyonun her bir elemanı çağırıldığında gerekli
    işlemi yaptıktan sonra işlem sonucunu döndürmek ve tekrar kendi döngüsüne dönülmesi için kullanılır.
 
    http://Bu örneği daha iyi anlayabilmek için  Genişletme Yöntemleri  ve  Lambda İfadeleri  yazılarımı inceleyebilirsiniz // Bu sınıf IEnumerable<int> arayüzünü genişleten bir yöntem tanımlar. public static class OzelSilsileIslecleri { public static IEnumerable <int> Katistir ( this IEnumerable <int>  birinci , IEnumerable <int>  ikinci , Func < int , int , int >  fonksiyon ) { IEnumerator <int> Sayici1 =  birinci . GetEnumerator (); IEnumerator <int> Sayici2 =  ikinci . GetEnumerator (); while ( Sayici1 . MoveNext () && Sayici2 . MoveNext ()) { yield return  fonksiyon ( Sayici1 . Current , Sayici2 . Current ); } } } 
Console.ReadLine();
 int [] VectorA = { 0 , 2 , 4 , 5 , 6 }; int [] VectorB = { 1 , 3 , 5 , 7 , 8 }; IEnumerable CarpimDizisi = VectorA . Katistir ( VectorB , ( a ,  b ) =>  a  *  b ); int SkalerCarpim = CarpimDizisi . Sum (); Console . Write ( "Çarpım dizisi : " ); foreach ( int Carpim in CarpimDizisi ) { Console . Write ( Carpim ); Console . Write ( " " ); } Console . WriteLine (); Console . WriteLine ( "Vektörlerin skaler çarpımı = {0}" , SkalerCarpim ); Console.ReadLine(); 
Örneğin çıktısı şöyle olacaktır :
 Çarpım dizisi : 0 6 20 35 48 
Vektörlerin skaler çarpımı = 109
Ekleyen: canora