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>
oIQueryable<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
- Font de Dades: Una llista de números enters.
- Consulta LINQ: Utilitza la sintaxi de consulta per seleccionar números parells.
- 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ó.
Operadors de Projecció
- Select: Projecció dels elements d'una col·lecció en una nova forma.
Operadors d'Ordenació
- OrderBy: Ordena els elements d'una col·lecció en ordre ascendent.
- OrderByDescending: Ordena els elements d'una col·lecció en ordre descendent.
Operadors d'Agrupació
- GroupBy: Agrupa els elements d'una col·lecció en funció d'una clau.
Operadors d'Agregació
- Count: Comptabilitza el nombre d'elements d'una col·lecció.
- Sum: Calcula la suma dels elements d'una col·lecció.
- Average: Calcula la mitjana dels elements d'una col·lecció.
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#.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització