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
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Gestire il colore CSS con HWB
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Gestire la cancellazione di una richiesta in streaming da Blazor
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Miglioramenti nell'accessibilità con Angular CDK
Utilizzare Copilot con Azure Cosmos DB
Utilizzare i primary constructor di C# per inizializzare le proprietà
Disabilitare automaticamente un workflow di GitHub
Recuperare App Service cancellati su Azure