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.