Özet - LINQ metotları
Any, Sum, Distinct ve Take'i birleştirerek bir satış raporu yazarsın.
Özet - LINQ metotları
Bu grupta ek LINQ metotlarını öğrendin: Any/All koşul kontrolü, Count/Sum/Average/Min/Max hesaplama, Distinct/Contains küme işlemleri, Take/Skip parçalama, ToDictionary/ToList dönüşüm.
Son derste bir satış raporu yazacaksın: satışlarda en az bir büyük satış var mı diye Any ile bak, tutarların Sum'ını al, müşterileri Distinct ile tekilleştir ve Take ile en üst üç satışı göster.
Uygulama Satış raporu yaz
sales listesinde: (1) en az bir 1000'nin üstünde satış var mı Any ile sorgula ve sonucu yazdır; (2) Sum ile tüm tutarların toplamını yazdır; (3) OrderByDescending ile sıralayıp Take(2) ile en büyük iki tutarı foreach ile yazdır.
Örnek çözümü göster
Console.WriteLine(sales.Any(s => s.Amount > 1000)); Console.WriteLine(sales.Sum(s => s.Amount)); foreach (var s in sales.OrderByDescending(s => s.Amount).Take(2)) Console.WriteLine(s.Amount);
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Linq;
class Sale
{
public int Amount { get; set; }
}
class Program
{
static void Main()
{
var sales = new List<Sale>
{
new Sale { Amount = 500 },
new Sale { Amount = 1500 },
new Sale { Amount = 800 },
new Sale { Amount = 2000 }
};
Console.WriteLine(sales.Any(s => s.Amount > 1000));
Console.WriteLine(sales.Sum(s => s.Amount));
foreach (var s in sales.OrderByDescending(s => s.Amount).Take(2))
{
Console.WriteLine(s.Amount);
}
}
}
Uygulama Tekil tutarları bul
sales listesindeki tutarları Select ile al, Distinct ile tekilleştir ve foreach ile yazdır.
Örnek çözümü göster
sales.Select(s => s.Amount).Distinct() zincirini kur, foreach ile gez ve Console.WriteLine(a) ile yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Linq;
class Sale
{
public int Amount { get; set; }
}
class Program
{
static void Main()
{
var sales = new List<Sale>
{
new Sale { Amount = 500 },
new Sale { Amount = 500 },
new Sale { Amount = 800 },
new Sale { Amount = 800 }
};
foreach (var a in sales.Select(s => s.Amount).Distinct())
{
Console.WriteLine(a);
}
}
}
Kendini test et
-
Hangi metot toplamı verir?
- Average()
- Sum()
- Distinct()
- Take(n)
Cevabı göster
Distinct() — Doğru. Sum() sayısal koleksiyonun toplamını verir.
-
Metodu amacına eşle
- Any
- En az biri
- Sum
- Toplam
- Distinct
- Tekilleştir
- Take
- İlk n eleman