mercoledì 1 marzo 2023

C# linq effettuare la differenza tra due classi con multiple proprietà

Di seguito si riporta un frammento di codice per effettuare la differenza tra due classi esaminando le proprietà come parametri di condizione.


Può capitare di avere due liste di oggetti che hanno una serie di proprietà, questi oggetti contengono n dati e vogliamo verificare che i dati presenti in uno non sono contenuti nell'altro. Un caso potrebbe essere che gli oggetti mappano due tabelle con le stesse colonne ma che si vuole verificare la differenza tra il primo ed il secondo.

La classe che utilizzeremo come oggetto e lista è la seguente:

  public class Anagrafica
    {
        public string Nome { get; set; }
        public string Cognome { get; set; }
    }


Di seguito l'inizializzazione della classe con una ipotetica fonte dati:


 List<Anagrafica> AnagraficaOrigine = CaricaDati();

 List<Anagrafica> AnagraficaDestinazione = CaricaDati();

Dopo aver valorizzato i due oggetti contenenti i dati per le due proprietà (nome e cognome) dobbiamo effettuare una select per verificare quali dati mancano nel secondo oggetto utilizzando le proprietà come condizione di filtro dei dati stessi.


 var risultato = AnagraficaOrigine .Where(a => !AnagraficaDestinazione .Any(b => a.Nome  == b.Nome && a.Cognome== b.Cognome));

L'oggetto "risultato" avrà i valori che non sono presenti nell'oggetto "AnagraficaDestinazione".

Nessun commento: