Molto spesso capita di avere a che fare con delle liste non generiche come gli ArrayList o qualunque altro oggetto implementi IEnumerable e non IEnumerable<T>. Questo è soprattutto vero quando capita di fare porting di applicazioni dalla versione 1.x alla 3.5 ma anche quando capita di interrogare le proprietà di alcuni oggetti (Controls dell'oggetto Page, Nodes dell'oggetto TreeView, ecc ecc.).
LINQ può eseguire query su qualunque lista implementi l'interfaccia IEnumerable<T> quindi quelle precedente menzionate non sono interrogabili. Per fare in modo che anche le liste non generiche diventino interrogabili, si può utilizzare il metodo Cast che converte la lista da un IEnumerable ad un IEnumerable<T> dove T è un tipo che si passa in input al metodo. In questo modo, si possono eseguire, nella solita modalità, query sulla lista convertita.
Page.Controls.Cast<Control>().Where(o=> o.ID == "id");
Bisogna fare attenzione al tipo che si passa in input al metodo Cast in quanto, se la lista contiene un oggetto che non si può castare al tipo, viene sollevata un'eccezione.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Visual Basic 2010 - Espresso
- Pubblicare su Azure Functions con Visual Studio Team Services
- Impostare le regole di autorizzazione in un'area di ASP.NET MVC
- Ricavare lo spazio occupato su disco dal nostro sito
- Migliorare l'organizzazione delle risorse con Azure Policy
- Eseguire query LINQ su liste non generiche con l'operatore Cast
- Modificare il timezone di un device IoT con la Universal Windows Platform
- Disponibili la Release Preview di Windows 8 e la Release Candidate di Visual Studio 2012
- Scegliere tra le versioni Current ed LTS di ASP.NET Core
- Mostrare tutti i campi di una tabella