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