2011-08-19 134 views
10

私はAsp.Net 4とC#を使用して、私はこのクエリを持っているEF 4.エラー:式ツリーは動的な操作を含めることはできません

を使用し、私はエラーが表示さ:

An expression tree may not contain a dynamic operation 

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

Lamba式を使用してダイナミックタイプをキャストすることは不可能です。

私は問題を解決でき、自分のオブジェクトを使用することができますo in my Lamba?おかげ

PS: e.Item.DataItemはタイプCmsContento.ContentIdである私は私の問題への解決策を見出すタイプ

var o = (CmsContent)e.Item.DataItem; 
+1

'e.Item.DataItem'を' ContentId'プロパティを定義する型にキャストできますか? – cdhowie

+1

私はLambaの中でそれをすることができません。どのようにそれを作るためのアイデア? – GibboK

+1

'var o =(SomeType)e.Item.DataItem;' 'SomeType'は、あなたが期待しているオブジェクトの型です。 – cdhowie

答えて

3

変更

dynamic o = e.Item.DataItem; 

です。

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