Pergunta

Estou usando células Asposas para manipular as planilhas do Excel. Um dos tipos da API é uma coleção de imagens na planilha, que deriva da Coleção:

Veja este link:http://www.aspose.com/documentation/.net-coMponnts/aspose.cells-for-.net/aspose.cells.pictures.html

Eu quero converter esse tipo para algo que me permita usar expressões LINQ

Quais são as opções para isso?

Eu acho que poderia itera sobre isso e adicioná -lo manualmente a um new List<Picture>Mas existe uma maneira melhor de fazer isso?

Eu li esta perguntaAcrescentando ienumerableu003CT> para a classe derivada da coleção

Mas obviamente não tenho controle sobre a classe que implementa a coleta Bace, pois é um produto de terceiros

Foi útil?

Solução

Basta usar o Enumerable.Cast<T>() Método de extensão no não genérico IEnumerable Interface, que você pode fazer implicitamente em uma expressão de consulta:

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

ou explicitamente, por exemplo, se você deseja usar a notação de ponto:

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

Uma alternativa a Cast<T>() é OfType<T>() - que basicamente ignora quaisquer elementos que não sejam do tipo certo. Nesse caso eu acho Cast<T>() é mais apropriado embora.

Se você deseja converter toda a coleção para um List<T> Por qualquer motivo, isso também é fácil:

List<Picture> list = pictures.Cast<Picture>().ToList();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top