usar tutorial operadores metodos instrucciones espaƱol consultas como comandos avanzadas c# .net linq ienumerable ienumerator

c# - tutorial - Convierte CollectionBase a lista o tipo de datos usable con Linq



operadores en linq c# (1)

Simplemente use el método de extensión Enumerable.Cast<T>() en la interfaz IEnumerable no genérica, que puede hacer implícitamente en una expresión de consulta:

var query = from Picture picture in pictures where ... select ...;

o explícitamente, por ejemplo, si desea utilizar la notación de puntos:

var query = pictures.Cast<Picture>() .Where(...) .Select(...);

Una alternativa a Cast<T>() es OfType<T>() , que básicamente ignora cualquier elemento que no sea del tipo correcto. En este caso, creo que Cast<T>() es más apropiado.

Si quieres convertir toda la colección a una List<T> por cualquier razón, también es fácil:

List<Picture> list = pictures.Cast<Picture>().ToList();

Estoy utilizando las celdas Aspose para manipular las hojas de cálculo de Excel. Uno de los tipos en la API es una colección de imágenes en la hoja de cálculo, que se deriva de CollectionBase:

vea este enlace: http://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html

Quiero convertir este tipo a algo que me permita usar expresiones Linq

¿Cuáles son las opciones para esto?

Supongo que podría iterar sobre él y agregarlo manualmente a una new List<Picture> Pero hay una mejor manera de hacerlo?

He leído esta pregunta Agregando IEnumerable <T> a la clase derivada de CollectionBase

Pero obviamente no tengo control sobre la clase que implementa CollectionBace ya que es un producto de terceros