2010-09-06 19 views

risposta

7

Rows non è fortemente tipizzato - così ci sarà un cast ad ogni iterazione, e non è possibile utilizzare LINQ agli oggetti su di esso facilmente. (Credo che lo stesso AsEnumerable() inserirà internamente ogni iterazione, ma almeno lo si può usare facilmente per altri metodi LINQ.)

Select ha bisogno di costruire un array, quindi c'è ovviamente una penalità di prestazioni lì.

Personalmente userei AsEnumerable() a meno che non si voleva modificare la tabella all'interno del ciclo, nel qual caso il fatto che Select costruisce una matrice up-front può effettivamente essere un vantaggio.

0

Utilizzare AsEnumerable() se si sta tentando di eseguire una query sul datatable utilizzando LINQ, altrimenti, si potrebbe anche utilizzare la struttura di looping ...