2011-08-19 94 views
10

utilizo Asp.Net 4 y C#, utilizo EF 4.Error: un árbol de expresión puede no contener una operación dinámica

tengo esta consulta, recibo un error:

An expression tree may not contain a dynamic operation 

dynamic o = e.Item.DataItem; 
var imagesContent = context.CmsImagesContents.FirstOrDefault(img => img.ContentId == o.ContentId); 

Parece que es imposible lanzar un tipo dinámico utilizando una expresión de Lamba.

¿Cómo puedo solucionar el problema y puedo usar mi objeto o in my Lamba? Gracias

PS: e.Item.DataItem es de tipo CmsContent y o.ContentId es de tipo Int

+1

¿Se puede convertir 'e.Item.DataItem' al tipo que define la propiedad' ContentId'? – cdhowie

+1

No puedo hacerlo dentro de Lamba. ¿Alguna idea de cómo hacerlo? – GibboK

+1

'var o = (SomeType) e.Item.DataItem;' donde 'SomeType' es el tipo de objeto que está esperando. – cdhowie

Respuesta

9

descubrí una solución a mi problema.

 int contentId = (int)o.ContentId; 
    var image = context.CmsImagesContents.FirstOrDefault(img => img.ContentId == contentId); 
3

Cambio

dynamic o = e.Item.DataItem; 

Para

var o = (CmsContent)e.Item.DataItem; 
Cuestiones relacionadas