0
我有以下嵌套的ViewModels:查询列表
Public Class ContentViewModel
Public Property CONTENTID As Integer
Public Property IMAGETOCONTENT() As IEnumerable(Of ImageToContentViewModel)
End Class
Public Class ImageToContentViewModel
Public Property IMAGETOCONTENTID As Integer
Public Property IMAGE As ImageViewModel
End Class
Public Class ImageViewModel
Public Property IMAGEID As Integer
Public Property TITLE As String
End Class
我想查询嵌套的ViewModels:
Function Test() As ContentViewModel
Dim dataObject = (From a In db.CMS_CONTENT.OfType(Of CMS_EVENT)()
Where a.CONTENTID = contentId AndAlso a.DELETED = 0
Select New ContentViewModel With {
.CONTENTID = a.CONTENTID,
.IMAGETOCONTENT = (From b In db.CMS_IMAGES_TO_CONTENT
Where b.CONTENTID = a.CONTENTID
Select New ImageToContentViewModel With {
.IMAGETOCONTENTID = b.IMAGETOCONTENTID,
.IMAGE = (From c In db.CMS_IMAGES
Where c.IMAGEID = b.IMAGEID And c.DELETED = False
Select New ImageViewModel With {
.IMAGEID = c.IMAGEID,
.TITLE = c.TITLE
})
})
})
Return dataObject
End Function
我的问题是,我不能返回人口viewmodel,因为我总是得到错误:
类型“System.Data.Objects.ObjectQuery`1 [MvcApp.ContentViewModel]”的对象无法转换为“MvcApp.ContentViewModel”
如果我使用'返回dataObject.FirstOrDefault()'我得到_Type'System.Linq.IQueryable1'无法转换为类型'MvcApp.ImageViewModel'。 'LINQ to Entities'仅支持原始实体数据模型类型_的转换,并且如果我使用'IQueryable(of ContentViewModel)'作为返回类型,查询将执行,但是如何将结果转换为单个视图模型Dim viewModel = New EventViewModel ? – stare 2013-02-11 15:02:47
每次选择后都必须使用FirstOrDefault,也是嵌套的。但是,你必须意识到linq查询可能会返回具有多个项目的列表。你真的只需要第一个吗? – 2013-02-11 15:16:03
实际上,父视图模型ContentViewModel(单个)具有ImageToContentViewModel(ienumerable)的嵌套列表,每个ImageToContentViewModel都有一个嵌套的ImageViewModel(单个)。 – stare 2013-02-11 15:27:07