fbpx

LINQ

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ł.");
        }
    }
}