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: 857. 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
// Peter8. 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.