Najbežnejšie Použitie LINQ v C#

1. Výber Prvkov zo Zoznamu (Select)

Najjednoduchšie použitie LINQ je výber konkrétnych prvkov z kolekcie, podobne ako SELECT v SQL.

var numbers = new List<int> { 1, 2, 3, 4, 5 };
var squaredNumbers = numbers.Select(n => n * n).ToList();

foreach (var num in squaredNumbers)
{
    Console.WriteLine(num); // Výstup: 1, 4, 9, 16, 25
}

2. Filtrovanie Záznamov (Where)

Pomocou Where môžete filtrovať kolekciu na základe určitého kritéria.

var numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();

foreach (var num in evenNumbers)
{
    Console.WriteLine(num); // Výstup: 2, 4, 6
}

3. Zoradenie Záznamov (OrderBy a OrderByDescending)

LINQ poskytuje možnosť zoradiť kolekciu pomocou OrderBy alebo OrderByDescending.

var names = new List<string> { "Peter", "Anna", "Zuzana", "Ivan" };
var sortedNames = names.OrderBy(name => name).ToList();

foreach (var name in sortedNames)
{
    Console.WriteLine(name); // Výstup: Anna, Ivan, Peter, Zuzana
}

4. Súčtovanie a Agregácia (Sum, Average, Max, Min)

LINQ má množstvo vstavaných metód pre agregáciu hodnôt, ako Sum, Average, Max, Min.

var numbers = new List<int> { 1, 2, 3, 4, 5 };
int sum = numbers.Sum(); // Výstup: 15
double average = numbers.Average(); // Výstup: 3.0

Console.WriteLine($"Súčet: {sum}, Priemer: {average}");

5. Určenie Existencie Prvkov (Any, All)

Any() kontroluje, či kolekcia obsahuje aspoň jeden prvok, ktorý spĺňa určité kritérium. All() kontroluje, či všetky prvky kolekcie spĺňajú určité kritérium.

var numbers = new List<int> { 1, 2, 3, 4, 5 };
bool hasEvenNumbers = numbers.Any(n => n % 2 == 0); // Výstup: true
bool allPositive = numbers.All(n => n > 0); // Výstup: true

Console.WriteLine($"Obsahuje párne číslo: {hasEvenNumbers}, Všetky sú pozitívne: {allPositive}");

6. Splynutie Dvoch Kolekcií (Join)

Join umožňuje pripojiť dve kolekcie na základe spoločného kľúča, podobne ako SQL JOIN.

var students = new List<Student>
{
    new Student { Id = 1, Name = "Anna" },
    new Student { Id = 2, Name = "Peter" }
};

var scores = new List<Score>
{
    new Score { StudentId = 1, Value = 90 },
    new Score { StudentId = 2, Value = 85 }
};

var studentScores = students.Join(scores,
    student => student.Id,
    score => score.StudentId,
    (student, score) => new { student.Name, score.Value }).ToList();

foreach (var studentScore in studentScores)
{
    Console.WriteLine($"{studentScore.Name} - Skóre: {studentScore.Value}");
}
// Výstup: Anna - Skóre: 90, Peter - Skóre: 85

7. Skupinovanie (GroupBy)

GroupBy slúži na zoskupovanie prvkov na základe určitého kľúča.

var people = new List<Person>
{
    new Person { Name = "Anna", Age = 30 },
    new Person { Name = "Peter", Age = 25 },
    new Person { Name = "Ivan", Age = 30 }
};

var groupedByAge = people.GroupBy(person => person.Age);

foreach (var group in groupedByAge)
{
    Console.WriteLine($"Vek: {group.Key}");
    foreach (var person in group)
    {
        Console.WriteLine($"  {person.Name}");
    }
}
// Výstup:
// Vek: 30
//   Anna
//   Ivan
// Vek: 25
//   Peter

8. Výber Unikátnych Hodnôt (Distinct)

Distinct slúži na získanie unikátnych hodnôt v kolekcii.

var numbers = new List<int> { 1, 2, 2, 3, 4, 4, 5 };
var uniqueNumbers = numbers.Distinct().ToList();

foreach (var num in uniqueNumbers)
{
    Console.WriteLine(num); // Výstup: 1, 2, 3, 4, 5
}

9. Prevod Kolekcie na Iný Typ (ToDictionary, ToList)

Pomocou ToDictionary alebo ToList môžete konvertovať kolekciu do iného dátového typu.

var people = new List<Person>
{
    new Person { Name = "Anna", Age = 30 },
    new Person { Name = "Peter", Age = 25 }
};

var peopleDictionary = people.ToDictionary(person => person.Name, person => person.Age);

foreach (var kvp in peopleDictionary)
{
    Console.WriteLine($"{kvp.Key}: {kvp.Value}"); // Výstup: Anna: 30, Peter: 25
}

10. Prvky od Určitého Indexu (Skip, Take)

Skip a Take slúžia na výber určitého množstva prvkov z kolekcie.

var numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var subset = numbers.Skip(2).Take(3).ToList(); // Preskočí prvé 2 a zoberie ďal
        foreach (var num in subset)
{
    Console.WriteLine(num); // Výstup: 3, 4, 5
}

Záver

Tieto príklady predstavujú len zlomok toho, čo je možné s LINQ v C#. LINQ poskytuje výkonný a flexibilný spôsob manipulácie s dátami v C# a je dôležitým nástrojom pre vývojárov.

Oficiálna Dokumentácia LINQ

Ďalšie Zdroje

Máte projekt? Prvá konzultácia je zadarmo

Či už máte hotové zadanie alebo len nápad - odpoviem vám do 24 hodín.

Kapacita obmedzená: V danom čase aktívne pracujem maximálne na 2 projektoch súčasne, aby som zachoval vysokú kvalitu.

Napísať Email 📞 Zavolať teraz LinkedIn Profil