2011-03-26 6 views
6

Tengo una lista simple de objetos expandidos llamados productos..net objeto de expansión y LINQ. ¿Posible o no?

Puedo añadir varios campos a estos objetos en tiempo de ejecución (por ejemplo, color o tamaño)

¿Cómo puedo escribir una consulta LINQ en esta lista sobre la base de campos dinámicos?

Con una clásica lista de objetos que podría escribir una consulta LINQ como esto:

From item in Products Where item.color="red" select item 

pero con expandos, cómo se puede conseguir esto, sabiendo que no sé de antemano el nombre de los campos (podría ser el tamaño del peso o cualquier otra cosa)?

Gracias de antemano.

Respuesta

6

El objeto expando implementa IDictionary (Of String, Object) Así podría convertirlo a un IDictionary y acceder a sus propiedades pasando una cadena.

+1

Brilliant! Estaba dando vueltas durante horas y funciona: del artículo como IDictionary (de String, Object) en productos Where item ("color") = "Red" ... ¡Gracias, señor! – alainb

0

Puede escribir el código como el siguiente: De la partida en los productos Dónde (artículo tan dinámico) .color = "red" seleccionar el elemento

Cuestiones relacionadas