Quando usiamo uno dei metodi di LINQ possiamo usare una lambda expression o una Func per esprimere cosa dobbiamo fare. Se, ad esempio, vogliamo cercare tutte le persone maggiorenni possiamo scrivere la seguente query LINQ.
var result = people.Where(p => p.Age >= 18);
In questo caso l'espressione di ricerca è estremamente semplice e le lambda rendono il codice facilmente leggibile. Tuttavia spesso le espressioni sono più complesse. Supponiamo di dover cercare le persone tra i 50 e i 60 anni che hanno almeno due figli maggiorenni. In questo caso dovremmo scrivere un'espressione molto complessa che renderebbe il codice particolarmente complicato da leggere.
Per migliorare la leggibilità del codice possiamo usare una lambda che usa un metodo come nel seguente codice.
var result = people.Where(p => {
if (p.Age < 50 || p.Age > 60)
return false;
return (p.Children.Count(c => c.Age >= 18) >= 2);
});La differenza sintattica tra questo codice e quello visto in precedenza è notevole. Invece che tornare una semplice espressione, la lambda torna il corpo di un metodo. In questo caso la prima condizione verifica l'eta della persona e nel caso non ricada nel range restituisce false. Poichè stiamo dichiarando un vero e proprio metodo, è obbligatorio usare la parola chiave return. La seconda condizione verifica che la persona abbia almeno due figli maggiorenni e ritorna true o false a seconda della veridicità della condizione.
Ovviamente questo modo di scrivere query è utilizzabile solamente quando si lavora su dati in memoria. Nessun provider LINQ, come quello per Entity Framework o NHibernate o altro ancora, è in grado di tradurre questo codice in SQL.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Applicare il progressive enhancement in applicazioni web
Blazor e Static Web Assets in .NET 10
Personalizzare le pagine di errore su Azure App Service
Usare Microsoft-Decision-1 di AI Foundry per ottenere risposte decisionali strutturate
Monitorare le tabelle di Azure SQL Database con Change Event Streaming
Stop Building Chatbots. Build a team
.NET Aspire vs Dapr: differenze, sovrapposizioni e integrazione
From Data to Insight: Exploratory Data Analysis with Python, VS Code and SQL MCP Server
Response streaming con Blazor e .NET 10
Sfruttare la funzione REGEXP_COUNT di Sql Server per contare i record che corrispondono a una certa regular expression
Migliorare accessibilità e interazioni nelle pagine HTML con gli attributi inert e autofocus
Stop alle password con Azure Managed Identity
I più letti di oggi
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Accedere a dati esposti con WebService con Silverlight 1.0
- Utilizzare dati in formato XML in XAML


