İlk makalemizde LINQ’ya genel bir giriş yapmıştık. Bu makalede, memory’de bulunan collectionlarda nasıl sorgulamalar yapılabilir, ne tür fonksiyonlar kullanılabilir gibi konulara değineceğiz. Kodlama geliştirme yaparken kullandığımız IEnumerable interfacelerinden gelen collection yapısında olan tüm nesnelerde Linq kullanarak sorgulamalar yapabiliriz. Hatta collection içerisinden max, min, avarage vs.. gibi çoğu fonksiyonları kullanabiliriz. Linq’dan önce sorgulama işlemlerimizi döngüler yardımı ile yapabiliyorduk, linq ile beraber tek satırda tüm bu sorgulamaları yapma imkanına sahip olduk. Kısa örnekler ile nasıl kullanılabildiklerine bakalım.
- Average: Sayısal objectler üzerinde ortalama almak için kullanılır. Decimal değer döndürür.
- All: Collection içerisindekilerin tümü verilen bir kritere uyup uymadığını kontrol eder ve sonuç olarak true yada false döndürür.
- Any: Collection içerisindekilerin en az birinin verilen bir kritere uyup uymadığını kontrol eder ve sonuç olarak true yada false döndürür.
- Concat: İki collection’ı birleştirir ve geriye birleşmiş olacn collection döner.
- Contains: Collection içerisinde belirtilen object içeriyor mu diye arar, eğer içeriyor ise true içermiyor ise false döndürür.
- Count: Collection içerisinde bulunan object’lerin toplam sayısını döndürür.
- Distinct: Collection içerisinde objectler eğer tekrar ediyorsa, onları tek olarak döndürür. Dönen collection içerisinde tekrar eden object bulunmaz.
- ElementAt: Parametre olarak index alır ve verilen index’e karşılık gelen object’i döndürür.
- ElementAtOrDefault: Parametre olarak index alır ve verilen index’e karşılık gelen object’i döndürür. Eğer verilen index’te bir object yok ise onun default değerini döndürür. Örneğin sayılardan oluşan collection içerisinde default 0 döner, objectlerde ise nothing döndürür.
- Except: Parametre olrak verilen ikinci collection’da bulunan objectlerin dışındaki objectleri döndürür.
- First: Collection’da bulunan ilk object’ti döndürür.
- FirstOrDefault: Collection’da bulunan ilk object’ti döndürür. Eğer object yok ise default olarak nothing döndürür yada parametre olarak default döndürülmesi gereken değer verilebilir.
- GroupBy: Collection içerisinde verilen bir değere göre grouplar.
- Intersect: iki collection içerisinde de bulunan değerleri yani kesişimini döndürür.
- Join: İki collection’ı bir eşitlik değeri ile aralarında bağlantı kurar.
- Last: Collection’da bulunan en sonki object’ti döndürür.
- LastOrDefault: Collection’da bulunan en sonki object’ti döndürür. Eğer object yok ise default olarak nothing döndürür yada parametre olarak default döndürülmesi gereken değer verilebilir.
- Max: Sayısal collection içerisinde en büyük değere ship olanı döndürür.
- Min: Sayısal collection içerisinde en küçük değere ship olanı döndürür.
- OrderByDescending: Verilen kritere göre colelction’ı büyükten küçüğe doğru sıralar
- OrderBy: Verilen kritere göre colelction’ı küçükten büyüğe doğru sıralar
- Reverse: Verilen kritere göre colelction’ı tersine döndürür.
- Skip: Collection içerisinden parametre olarak verilen indexten sonrasını döndürür.
- Sum: Sayısal collection’ın toplam değerini döndürür.
- Take: Collection içerisinden parametre olarak verilen indexe kadar olanı döndürür.
- TakeWhile: Collection içerisinden verilen kritere uyan olan değerleri döndürür. Kritere uymayan il değerde işlem durdurulur.
- Union: İki collectionı birleştirir.
- Where: Verilen kritere uygun olan değerleri döndürür.
Public Class frmLINQ2 Dim objMemoryObject As Decimal() = New Decimal() {1.34, 3.98, 2.98, 3.78 Dim objObjComp As clsComputer() = New clsComputer() {New clsComputer("Toshiba", 23, 3), New clsComputer("HP", 23, 1)} Private Sub Islem_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Islem.Click Try Dim objAvarage = objMemoryObject.Average() Dim objAll = objMemoryObject.All(Function(sayi) sayi > 2) Dim objAny = objMemoryObject.Any(Function(sayi) sayi > 2) Dim objConcat = objMemoryObject.Concat(New Decimal() {4.0, 5.67}) Dim objContains = objMemoryObject.Contains(3.98) Dim objCount = objMemoryObject.Count() Dim objDistinct = objMemoryObject.Distinct() Dim objElementAt = objMemoryObject.ElementAt(2) Dim objElementAtOrDefault = objMemoryObject.ElementAtOrDefault(5) Dim objObjectElementAtOrDefault = objObjComp.ElementAtOrDefault(1) objObjectElementAtOrDefault = objObjComp.ElementAtOrDefault(4) Dim objExcept = objMemoryObject.Except(New Decimal() {3.98}) Dim objFirst = objMemoryObject.First() Dim objGroupBy = objObjComp.GroupBy (Function(c) c.CPUSpeed) Dim objLast = objMemoryObject.Last() Dim objMax = objMemoryObject.Max() Dim objMin = objMemoryObject.Min() Dim objOrederByDescending = objMemoryObject.OrderByDescending (Function(v) v).ToList() Dim objOrederBy = objMemoryObject.OrderBy(Function(v) v).ToList() Dim objReverse = objMemoryObject.Reverse().ToList() Dim objSkip = objMemoryObject.Skip(2).ToList() Dim objSkipWhile = objMemoryObject.SkipWhile (Function(d) d < 2).ToList() Dim objSum = objMemoryObject.Sum() Dim objTake = objMemoryObject.Take(3).ToList() Dim objTakeWhile = objMemoryObject.TakeWhile (Function(d) d < 2).ToList() Dim objUnion = objMemoryObject.Union (New Decimal() {5.66, 3.77}).ToList() Dim objWhere = objMemoryObject.Where(Function(d) d > 2).ToList() Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class |
Örnek 1. LINQ fonksiyon örnekleri |
Armağan DÖKER
Yorumlar
Yorum Gönder