2011-08-19 62 views
10

tôi sử dụng Asp.Net 4 và C#, tôi sử dụng EF 4.Lỗi: Một cây biểu hiện có thể không chứa một hoạt động năng động

Tôi có câu hỏi này, tôi nhận được một lỗi:

An expression tree may not contain a dynamic operation 

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

Có vẻ như không thể Cast Cast Dynamic Type bằng Lamba Expression.

Làm cách nào để khắc phục sự cố và có thể sử dụng đối tượng o in my Lamba? Cảm ơn

PS: e.Item.DataItem là Loại CmsContento.ContentId là loại Int

+1

Bạn có thể truyền 'e.Item.DataItem' vào loại xác định thuộc tính' ContentId' không? – cdhowie

+1

Tôi không thể làm điều đó bên trong Lamba. Bất kỳ ý tưởng làm thế nào để làm cho nó? – GibboK

+1

'var o = (SomeType) e.Item.DataItem;' trong đó 'SomeType' là kiểu đối tượng bạn đang mong đợi. – cdhowie

Trả lời

9

tôi phát hiện ra một giải pháp cho vấn đề của tôi.

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

Thay đổi

dynamic o = e.Item.DataItem; 

Để

var o = (CmsContent)e.Item.DataItem; 
Các vấn đề liên quan