Introducció a LINQ

LINQ (Language Integrated Query) és una característica poderosa de C# que permet realitzar consultes sobre col·leccions de dades de manera similar a com es faria amb SQL. LINQ proporciona una sintaxi coherent per treballar amb diferents fonts de dades, com ara col·leccions en memòria, bases de dades, documents XML, etc.

Conceptes Clau de LINQ

  • Operadors de Consulta: Són mètodes que permeten realitzar operacions com seleccionar, filtrar, ordenar i agrupar dades.
  • Fonts de Dades: Qualsevol col·lecció que implementi la interfície IEnumerable<T> o IQueryable<T>.
  • Expressions Lambda: Funcions anònimes que s'utilitzen sovint en consultes LINQ per definir criteris de selecció i altres operacions.

Sintaxi Bàsica de LINQ

Exemple de Consulta LINQ

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // Font de dades
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // Consulta LINQ per seleccionar números parells
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        // Executar la consulta i mostrar els resultats
        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);
        }
    }
}

Explicació del Codi

  1. Font de Dades: Una llista de números enters.
  2. Consulta LINQ: Utilitza la sintaxi de consulta per seleccionar números parells.
  3. Execució de la Consulta: La consulta es materialitza quan s'itera sobre evenNumbers.

Operadors de Consulta LINQ

Operadors de Filtratge

  • Where: Filtra els elements d'una col·lecció en funció d'una condició.
var evenNumbers = numbers.Where(num => num % 2 == 0);

Operadors de Projecció

  • Select: Projecció dels elements d'una col·lecció en una nova forma.
var squares = numbers.Select(num => num * num);

Operadors d'Ordenació

  • OrderBy: Ordena els elements d'una col·lecció en ordre ascendent.
var orderedNumbers = numbers.OrderBy(num => num);
  • OrderByDescending: Ordena els elements d'una col·lecció en ordre descendent.
var orderedNumbersDesc = numbers.OrderByDescending(num => num);

Operadors d'Agrupació

  • GroupBy: Agrupa els elements d'una col·lecció en funció d'una clau.
var groupedNumbers = numbers.GroupBy(num => num % 2 == 0 ? "Even" : "Odd");

Operadors d'Agregació

  • Count: Comptabilitza el nombre d'elements d'una col·lecció.
int count = numbers.Count();
  • Sum: Calcula la suma dels elements d'una col·lecció.
int sum = numbers.Sum();
  • Average: Calcula la mitjana dels elements d'una col·lecció.
double average = numbers.Average();

Exercicis Pràctics

Exercici 1: Filtrar i Ordenar

Descripció: Escriu una consulta LINQ per seleccionar els números parells d'una llista i ordenar-los en ordre descendent.

Codi Inicial:

List<int> numbers = new List<int> { 10, 1, 4, 7, 6, 3, 8, 2, 9, 5 };

// Escriu la teva consulta LINQ aquí

Solució:

var evenNumbersDesc = numbers.Where(num => num % 2 == 0)
                             .OrderByDescending(num => num);

foreach (var num in evenNumbersDesc)
{
    Console.WriteLine(num);
}

Exercici 2: Agrupar i Comptar

Descripció: Escriu una consulta LINQ per agrupar els números d'una llista en parells i senars, i comptar quants hi ha de cada tipus.

Codi Inicial:

List<int> numbers = new List<int> { 10, 1, 4, 7, 6, 3, 8, 2, 9, 5 };

// Escriu la teva consulta LINQ aquí

Solució:

var groupedNumbers = numbers.GroupBy(num => num % 2 == 0 ? "Even" : "Odd");

foreach (var group in groupedNumbers)
{
    Console.WriteLine($"{group.Key}: {group.Count()}");
}

Resum

En aquesta secció, hem après els conceptes bàsics de LINQ, incloent-hi la sintaxi de consulta, els operadors de consulta més comuns i com utilitzar-los per filtrar, projectar, ordenar, agrupar i agregar dades. També hem practicat amb alguns exercicis per reforçar aquests conceptes. LINQ és una eina molt poderosa que pot simplificar significativament el treball amb col·leccions de dades en C#.

© Copyright 2024. Tots els drets reservats