20.06.16 21:22
LINQ - Concat ve SequenceEqual İle Örnekler
Concat İle Ekleme Örneği 1- Concat yöntemi iki koleksiyonu birleştirerek bir koleksiyon oluşturur.
Bu örnek, iki tamsayı dizisinin elemanlarını birleştirerek yeni bir dizi oluşturur.
// 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);
}
}
}
int[] CiftRakamlar = { 0, 2, 4, 6, 8 };
int[] TekRakamlar = { 1, 3, 5, 7, 9 };
var TumRakamlar = TekRakamlar.Concat(CiftRakamlar);
Console.WriteLine("Tüm rakamlar:");
foreach (var Rakam in TumRakamlar)
{
Console.Write(Rakam);
Console.Write(" ");
} Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Tüm rakamlar:
1 3 5 7 9 0 2 4 6 8
Concat İle Ekleme Örneği 2 Concat yöntemi iki koleksiyonu birleştirerek bir koleksiyon oluşturur.
Bu örnek, öğrenci bilgilerini içeren bir veri kaynağından birinci ve ikinci sınıflardaki erkek
öğrencileri seçer ve daha sonra bu iki koleksiyonu birleştirip elemanlarını çıktıya yazar. (Bu örnekte kullanılan veri kaynağını görmek için tıklayın .) var Ogrenciler = OgrencileriGetir();
var BirinciSinifErkekleri =
from Ogrenci in Ogrenciler
where Ogrenci.Sinif == 1 && Ogrenci.Cinsiyet == "Erkek"
select Ogrenci.Adi;
var IkinciSinifErkekleri =
from Ogrenci in Ogrenciler
where Ogrenci.Sinif == 2 && Ogrenci.Cinsiyet == "Erkek"
select Ogrenci.Adi;
var BirinciVeIkinciSinifErkekleri =
BirinciSinifErkekleri.Concat(IkinciSinifErkekleri);
Console.WriteLine("1. ve 2. sınıflardaki erkek öğrenciler:");
foreach (var OgrenciAdi in BirinciVeIkinciSinifErkekleri)
{
Console.WriteLine(OgrenciAdi);
} Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
1. ve 2. sınıflardaki erkek öğrenciler:
Tekin
Kenan
Erhan
Ahmet
Nuri
Erhan
SequenceEqual İle Karşılaştırma Örneği SequenceEqual yöntemi, iki koleksiyonu karşılaştırarak tüm elemanlarının aynı ve aynı
dizilimde olup olmadığnı döndürür.
Bu örnek, şehir isimlerinden oluşan üç diziyi karşılaştırmakta ve dizilimlerinin aynı olup olmadığını çıktıya yazmaktadır.
var SehirlerA = new string[] { "Ankara", "İstanbul", "İzmir" };
var SehirlerB = new string[] { "İstanbul", "Ankara", "İzmir" };
var SehirlerC = new string[] { "Ankara", "İstanbul", "İzmir" };
var AveBSiraEsitMi = SehirlerA.SequenceEqual(SehirlerB);
var AveCSiraEsitMi = SehirlerA.SequenceEqual(SehirlerC);
var BveCSiraEsitMi = SehirlerB.SequenceEqual(SehirlerC);
Console.WriteLine("SehirlerA dizisi ile SehirlerB dizisindeki elemanlar ve sıralaması {0}.", AveBSiraEsitMi ? "eşit" : "eşit değil");
Console.WriteLine("SehirlerA dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması {0}.", AveCSiraEsitMi ? "eşit" : "eşit değil");
Console.WriteLine("SehirlerB dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması {0}.", BveCSiraEsitMi ? "eşit" : "eşit değil");
Örneğin çıktısı şöyle olacaktır :
SehirlerA dizisi ile SehirlerB dizisindeki elemanlar ve sıralaması eşit değil.
SehirlerA dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması eşit.
SehirlerB dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması eşit değil.
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 LINQ - Concat ve SequenceEqual İle Örnekle r (Bu makale)
Ekleyen: canora
Değiştiren: canora
10.04.16 23:46
LINQ - Concat ve SequenceEqual İle Örnekler
Concat İle Ekleme Örneği 1- Concat yöntemi iki koleksiyonu birleştirerek bir koleksiyon oluşturur.
Bu örnek, iki tamsayı dizisinin elemanlarını birleştirerek yeni bir dizi oluşturur.
// 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);
}
}
}
int[] CiftRakamlar = { 0, 2, 4, 6, 8 };
int[] TekRakamlar = { 1, 3, 5, 7, 9 };
var TumRakamlar = TekRakamlar.Concat(CiftRakamlar);
Console.WriteLine("Tüm rakamlar:");
foreach (var Rakam in TumRakamlar)
{
Console.Write(Rakam);
Console.Write(" ");
} Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Tüm rakamlar:
1 3 5 7 9 0 2 4 6 8
Concat İle Ekleme Örneği 2 Concat yöntemi iki koleksiyonu birleştirerek bir koleksiyon oluşturur.
Bu örnek, öğrenci bilgilerini içeren bir veri kaynağından birinci ve ikinci sınıflardaki erkek
öğrencileri seçer ve daha sonra bu iki koleksiyonu birleştirip elemanlarını çıktıya yazar. (Bu örnekte kullanılan veri kaynağını görmek için tıklayın .) var Ogrenciler = OgrencileriGetir();
var BirinciSinifErkekleri =
from Ogrenci in Ogrenciler
where Ogrenci.Sinif == 1 && Ogrenci.Cinsiyet == "Erkek"
select Ogrenci.Adi;
var IkinciSinifErkekleri =
from Ogrenci in Ogrenciler
where Ogrenci.Sinif == 2 && Ogrenci.Cinsiyet == "Erkek"
select Ogrenci.Adi;
var BirinciVeIkinciSinifErkekleri =
BirinciSinifErkekleri.Concat(IkinciSinifErkekleri);
Console.WriteLine("1. ve 2. sınıflardaki erkek öğrenciler:");
foreach (var OgrenciAdi in BirinciVeIkinciSinifErkekleri)
{
Console.WriteLine(OgrenciAdi);
} Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
1. ve 2. sınıflardaki erkek öğrenciler:
Tekin
Kenan
Erhan
Ahmet
Nuri
Erhan
SequenceEqual İle Karşılaştırma Örneği SequenceEqual yöntemi, iki koleksiyonu karşılaştırarak tüm elemanlarının aynı ve aynı
dizilimde olup olmadığnı döndürür.
Bu örnek, şehir isimlerinden oluşan üç diziyi karşılaştırmakta ve dizilimlerinin aynı olup olmadığını çıktıya yazmaktadır.
var SehirlerA = new string[] { "Ankara", "İstanbul", "İzmir" };
var SehirlerB = new string[] { "İstanbul", "Ankara", "İzmir" };
var SehirlerC = new string[] { "Ankara", "İstanbul", "İzmir" };
var AveBSiraEsitMi = SehirlerA.SequenceEqual(SehirlerB);
var AveCSiraEsitMi = SehirlerA.SequenceEqual(SehirlerC);
var BveCSiraEsitMi = SehirlerB.SequenceEqual(SehirlerC);
Console.WriteLine("SehirlerA dizisi ile SehirlerB dizisindeki elemanlar ve sıralaması {0}.", AveBSiraEsitMi ? "eşit" : "eşit değil");
Console.WriteLine("SehirlerA dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması {0}.", AveCSiraEsitMi ? "eşit" : "eşit değil");
Console.WriteLine("SehirlerB dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması {0}.", BveCSiraEsitMi ? "eşit" : "eşit değil");
Örneğin çıktısı şöyle olacaktır :
SehirlerA dizisi ile SehirlerB dizisindeki elemanlar ve sıralaması eşit değil.
SehirlerA dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması eşit.
SehirlerB dizisi ile SehirlerC dizisindeki elemanlar ve sıralaması eşit değil.
Ekleyen: canora