giovedì 11 aprile 2024

C# linq metodo IntersectBy per ritornare gli oggetti di due insieme

Il metodo Intersect, estrapola quei dati che presi due liste, hanno i valori uguali, qui https://emanuelemattei.blogspot.com/2021/04/linq-utilizzo-del-metodo-intersect-per.html un esempio di utilizzo.
Con la versione .Net 6 e versione successive, è possibile utilizzare il metodo "IntersectBy" per estrapolare un oggetto presente in entrambi le liste.

Di seguito il frammento di codice di una lista per la classe persona, con il quale si estrapolano gli oggetti che sono uguali in entrambi le liste, utilizzando come condizione la proprietà "Eta".

List<Persona> persone = new List<Persona>();
Persona persona = new Persona();
persona.Cognome = "Mattei";
persona.Nome = "Emanuele";
persona.Eta = 1;
persone.Add(persona);
persona = new Persona();
persona.Cognome = "Cristaldi";
persona.Nome = "Luigi";
persona.Eta = 2;
persone.Add(persona);
persona = new Persona();
persona.Cognome = "Bianchi";
persona.Nome = "Luca";
persona.Eta = 3;
persone.Add(persona);


List<Persona> persone2 = new List<Persona>();
Persona persona2 = new Persona();
persona2.Cognome = "Mattei";
persona2.Nome = "Emanuele";
persona2.Eta = 1;
persone2.Add(persona2);
persona2 = new Persona();
persona2.Cognome = "Cristaldi";
persona2.Nome = "Luigi";
persona2.Eta = 4;
persone2.Add(persona2);
           
var risultato = persone.IntersectBy(persone2.Select(p=>p.Eta), p=>p.Eta); //Restituisce Emanuele Mattei

Nessun commento: