Son Haberler
Anasayfa / Yazılım / C# / LINQ ve List Collection

LINQ ve List Collection

Diziler belirli bir tipte verileri saklayan basit yapılardır. Çok sık kullanılmalarına rağmen kapasiteleri sınırlıdır. Örneğin bir dizinin boyutunu o diziyi oluştururken belirtmemiz gerekir. Bir dizinin boyutunu sonradan değiştirmek istiyor isek ya o diziyi yeniden oluşturmalıyız ya da dizinin Resize metodunu kullanarak yeniden boyutlandırma yapmamız gerekir. Tabi daha da ilerisini elde etmek istiyor isek neler yapmalıyız, bu yazımızda giriş niteliğinde biraz buna değinelim. .NET Framework geleneksel bilindik dizilerin yanı sıra bize daha gelişmiş nitelikte olan önceden hazırlanmış veri yapılarını kullanmamıza imkan sağlar. Bu veri yapıları yeniden kullanılabilir, güvenilir, güçlü, etkili ve kalite ve performans açısından diğer dizi tiplerine göre daha iyidirler. Bu yapılar .NET’te List olarak yani Türkçe karşılılığı olarak Liste şeklinde adlandırılırlar. Listeler dizilere oldukça benzerler ama ek özellikleri mevcuttur. Dinamik boyutlandırma özelliği vardır mesela. Nedir bu özellik? Bu özellik ile programlarımızda gerektiği durumlarda dizilerimiz genişler. Yanbi veri aldıkça boyutu dinamik olarak değişir.

Tabi sürekli diziler, listeler veri saklamaya yarar diyoruz ya aklımızda şu soru oluşuyor. Verileri veritabanımda saklamam daha doğru değil mi? Evet en doğrusu verilerimizi veritabanında saklamaktır. Ancak verileri geçici olarak depolama için programımız üzerinde dizilere, Listelere ihtiyacımız olur. Burada aslında benim gelmek istediğim nokta aynı zamanda LINQ.

Nedir bu LINQ?

LINQ – Language Integrated  Query kelimelerinin kısaltılmış halidir. LINQ tıpkı SQL sorguları gibi sorgular oluşturmamıza izin veren bir yapıdır. Aynı zamanda LINQ listeler ve diziler üzerindeki elemanların listelenmesi, filtrelenmesi vb işlemlerde kullanılan bir yapıdır. LINQ’te söz dizimi yani syntax C# diline benzer. Projelerimizde LINQ kullanabilmek için kütüphane olarak using System.Linq; kullanılmalıdır.

Şimdi LINQ kullanımı ile basit örnekler yapalım. Console uygulaması yapacağım, dolayısı ile Visual Studio’da console projesi açtım. Amacım şu, 0’den 9’a (0 ve 9 dahil) kadar olan sayılardan oluşan bir dizi oluşturmak, bu dizi 12 elemanlı olacak. Bazı rakamlar birbirini tekrar edebilir. Bu diziyi orjinal oluşturma şekli ile ekrana yazdıracağım. Daha sonra bu dizide 5’ten büyük elemanları yazdıracağım. Daha sonra elemanları küçükten büyüğe sıralı yazdıracağım. Son olarak 5’ten büyük elemanları büyükten küçüğe sıralı yazdıracağım. Bu son şartlara bağlı yazdırma işlemleri için ise LINQ kullanacağım.

Projemin kodları aşağıdaki gibi:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Linq;

namespace ConsoleApplication24
{
class Program
{
static void Main(string[] args)
{
//Int tipinde bir dizi oluşturuyorum
int[] dizi = { 6, 2, 1, 9, 0, 3, 4, 7, 5, 8, 4, 9 };
//diziyi oluşturulduğu şekilde ekrana yazdırıyorum
Console.Write("Dizinin Oluşturulma Hali:");
foreach (var sayi in dizi)
{
Console.Write(" {0}", sayi);
}

//LINQ sorgusu ile 5'ten büyük elemanları ekrana yazdırıyorum.
var bestenBuyuk = from sayi in dizi where sayi > 5 select sayi;
Console.Write("\n5'ten büyük sayılar:");
foreach (var sayi in bestenBuyuk)
{
Console.Write(" {0}", sayi);
}

//Dizinin orjinal halini küçükten büyüğe sıralayalım
var siralanmis = from sayi in dizi orderby sayi select sayi;
//sıralanmış dizini yazdıralım
Console.Write("\nSıralanmış orjinal dizi:");
foreach (var sayi in siralanmis)
{
Console.Write(" {0}", sayi);
}

//yukarıda 5'ten büyükleri filtrelemiştik, şimdi onları büyükten küçüğe sıralayalım
var bestenBuyukSirala = from sayi in bestenBuyuk orderby sayi descending select sayi;
//yazdıralım
Console.Write("\nBüyükten küçüğe sıralanmış 5'ten büyük dizi:");
foreach (var sayi in bestenBuyukSirala)
{
Console.Write(" {0}", sayi);
}

Console.ReadLine();
}
}
}

20150921_05

 

Örnekte görüleceği üzere LINQ sorguları FROM cümlesi ile başlamakta. Böylelikte bir dizi aralığı içindeki veri tiplerini dikkate alıyoruz. Öncesinde de var tipinde lokal olarak değişken tanımlıyoruz. Where ile şartımızı belirtiyoruz. SELECT ile veri kaynağımızdan verileri seçiyoruz. ORDER BY ile sıralama yapıyoruz. ASCENDING artan yönde, DESCENDING azalan yönde sıralama sağlıyor.

2 yorum

  1. ismail bey merhaba;
    Sitenizdeki makaleleri çok beğeniyorum. Bir kaçını kaynak göstererek kendi web sayfamda yayımlamak istiyorum.
    İzniniz olursa..
    iyi günler

  2. Merhaba Orhan Bey.. Yorumunuz için teşekkür ederim, belirttiğiniz şekilde tabii ki uygundur, mutluluk duyarım.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir