Często pojawia się potrzeba znalezienia najtańszej albo najdroższej oferty.
Możemy przeszukać listę za pomocą pętli i znaleźć najtańszą ofertę. Jednak nie jest to najlepszy pomysł bo zamiast tego możemy użyć LINQ. Wystarczy, że w naszym pliku z kodem C# dodamy przestrzeń nazw:
using System.Linq;
Pozwoli to nam na korzystanie z metod zdefiniowanych przez LINQ. Technicznie LINQ to metody rozszerzające (ang. extension method). Przykładowe metody, które definiuje LINQ to:
- First
- Single
- SingleOrDefault
- Aggregate
- Any
W poniższym przykładzie zaprezentuję Ci 2 metody wyszukania najtańszego produktu z listy. Skorzystamy z metody Aggregate oraz First.
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleAppLinq
{
class Product
{
public string Name { get; set; }
public int Price { get; set; }
}
class Program
{
static void Main(string[] args)
{
//Szukanie najtańszej oferty
var products = new List<Product>
{
new Product() {Name = "Samsung", Price = 1999},
new Product() {Name = "Sony", Price = 2099},
new Product() {Name = "Dell", Price = 1899},
new Product() {Name = "Xiaomi", Price = 2099}
};
var minPrice = products.Min(x => x.Price);
var cheapestProduct = products.First(x => x.Price == minPrice);
Console.WriteLine($"Najtańszy produkt to {cheapestProduct.Name} i kosztuje {cheapestProduct.Price} zł.");
cheapestProduct = products.Aggregate((c, n) => (n.Price < c.Price ? n : c));
Console.WriteLine($"Najtańszy produkt to {cheapestProduct.Name} i kosztuje {cheapestProduct.Price} zł.");
}
}
}