Alcune volte può capitare che abbiate bisogno di vedere quali elementi di una collezione non siano inclusi in un’altra collezione.  (NOT IN)

Per esempio: Il classico libretto universitario

  • ho una lista di esami da sostenere per quanto riguarda il mio corso di laurea
  • ho una lista di esami che ho già sostenuto
  • voglio la lista degli esami da sostenere

il risultato in codice

IList<Esame> esami = InQualcheModoRecuperoTuttiGliEsamiDelMioCorsoDiLaurea(); // :-)
IList<Esame&gt; esamiSostenuti = InQualcheModoRecuperoTuttiGliEsamiSostenuti();
var esamiDaSostenere = from r in esami
                       where esamiSostenuti.All(m => m.Id != r.Id)
                       select r;

et voilà! :-) ho escluso dalla lista, di tutti gli esami, quelli che ho sostenuto

ps: Ovviamente nel mio caso ho previsto che gli esami fossero identificati da un id

pps: Mi scuso per l’indentazione