2011-10-11 14 views

risposta

13

Anziché chiamarlo utilizzando la sintassi del membro del metodo di estensione, provare a chiamare direttamente il metodo statico.

int count = Enumerable.Count(queryFromMassiveDynamic); 
+0

+1 ovviamente ... il metodo di estensione non è stato trovato. Sono affascinato dalla magia della risoluzione di sovraccarico di runtime di dinamica. Mi sembra di dimenticarmene sempre. – sehe

4

La domanda è un po 'spenta. In realtà non stai facendo un conteggio di IEnumerable<dynamic>. Sei cercando un conteggio su un dynamic (che si spera detiene un IEnumerable).

Il modo più semplice per farlo è quello di utilizzare un cast:

var z = (queryFromMassiveDynamic as IEnumerable<dynamic>).Count(); 
4

Si può prendere la risposta di sehe, che è quello di lanciare il risultato.

var z = (queryFromMassiveDynamic as IEnumerable<dynamic>).Count(); 

Invece, rendersi conto di ciò che si ottiene dalla funzione Membro della query. In effetti stai ottenendo un IEnumerable di tipo dinamico e var ha problemi con quelli.

Modificare questa linea

var queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst; 

Per questo

IEnumerable<dynamic> queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst; 

Conte verrà visualizzato senza dover fare alcun casting.

Problemi correlati