Questo si è un gran bel colpo...o almeno potrebbe esserlo.
LINQ avrà la possibilità (come anche i muri sanno) di interrogare collezioni di oggetti in memoria. Manca però una gestione di eventuali indici sulle proprietà degli oggetti in questione, come avviene in modo ormai consolidato sui database. Lo sfruttamento degli indici aumenta le perfomance di ricerca di almeno un ordine di grandezza, e questo è ben noto a quelli di db4object che su questo ci hanno lavorato bene.
I DBA possono star tranquilli, qui non si parla di andare a definire quali indici usare sul database per questa o per quella query. Infatti qui si parla di interrogare collezioni di oggetti già recuperati da un database (o da qualsiasi altro repository).
Possibili scenari? La cache di entity del dominio. Se un insieme di entity viene totalmente caricato in memoria, può e deve essere sottoposto a interrogazioni come quelle definibili via LINQ. Ma se le entity sono veramente tante, l'interrogazione può degradate notevolmente in prestazioni. Ecco il perchè degli indici anche su oggetti totalmente in RAM.
Mi piacerebbe in verità che quelli del team di LINQ pensassero seriamente ad una implementazione simile direttamente fornita insieme a LINQ stesso, sicuramente non in Orcas...ma magaria alla prossima...speriamo!