Negli script #658 e 662 abbiamo parlato di due metodi di LINQ introdotti nella versione 9 di .NET. In questo script parliamo di un altro metodo introdotto sempre da questa versione: IntersectBy. Questo metodo permette di trovare gli elementi in comune tra due liste.
Sin dalla prima versione, LINQ ha sempre avuto un metodo Intersect. Il lato debole di questo metodo sta nel fatto che per identificare gli oggetti in comune usa i metodi Equals e GetHashCode oppure un'istanza di IEquatable rendendone quindi più ostico l'utilizzo.
IntersectBy supera questa limitazione di Intersect permettendo di specificare un secondo parametro che rappresenta una lambda tramite la quale specificare i campi in base a cui verificare l'uguaglianza tra gli oggetti degli insiemi.
var l1 = new List<Person>
{
new Person { Id = 1, Name = "Stefano Mostarda" },
new Person { Id = 2, Name = "Daniele Bochicchio" },
new Person { Id = 3, Name = "Cristian Civera" },
};
var l2 = new List<Person>
{
new Person { Id = 1, Name = "Stefano Mostarda" },
new Person { Id = 4, Name = "Marco De Sanctis" },
};
var shared = l1.IntersectBy(l2, p => p.Id);In questo esempio, vengono create du liste di oggetti persona e successivamente ne viene cercata l'intersezione basando la ricerca sul campo Id. Il risultato è che la lista shared contiene solo la persona con id 1
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Mischiare codice server side e client side in una query LINQ con Entity Framework
Generare una User Delegation SAS in .NET per Azure Blob Storage
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Controllare la velocità di spostamento su una pagina HTML
Utilizzare DeepSeek R1 con Azure AI
Gestire il routing HTTP in Azure Container App
.NET Aspire per applicazioni distribuite
Utilizzare i command service nei test con .NET Aspire
Evidenziare una porzione di testo in un pagina dopo una navigazione
Utilizzare Intersect e Except per filtrare set di dati in TSql
Pubblicare un MCP Server in GitHub MCP Registry
I più letti di oggi
- .NET Campus - Roma
- .NET Conference Italia 2022 - Track in presenza - Milano
- Release Candidate 1 di Internet Explorer 8
- Windows Azure in versione 1.0: annunciata la piattaforma Microsoft per il cloud computing
- Disponibile la June 2011 CTP di Entity Framework
- Microsoft Security Bulletin MS02-043
- .NET vs J2EE? Secondo Microsoft non ci sono paragoni


