Attualmente utilizzo il seguente:
var result = list.Union(otherList).SelectMany(l => l.children).ToList()
foreach(var child in lotsOfChildren){
something = result.Contains(child)
}
Uso solo result per le query se l'elenco contiene elementi, utilizzando result.Contains(x) .
Questo aspetto è inefficiente per me, poiché presumibilmente Contains() deve enumerare l'intero elenco (statico) ogni volta, per verificare se un elemento è contenuto.
Ho notato metodi di estensione ToDictionary() e ToLookup() , tuttavia entrambi richiedono una chiave da definire, che non è necessaria.
Immagino che quello che cerco davvero sia una sorta di cosa di ToHashSet() - dovrei creare questo manualmente, come in .ToLookup(c => c.GetHashCode, c => c) ? O c'è un metodo integrato che mi manca? O , in alternativa, è qualcosa che il compilatore ottimizzerà e non ho bisogno di preoccuparmi.