匿名类型和LINQ和强制转换

时间:2012-12-17 23:30:09

标签: vb.net linq entity-framework-5 anonymous

我非常依赖LINQ业务的这种匿名类型。这是通过对前一个问题的答案进行处理的结果,但遗憾的是,我只是没有大脑的力量来完成这项工作。

我正在返回与每个人相关的有限事件列表。源是实体框架,我仍在努力从导航属性获得标准限制结果。以下代码是我对Nicholas Butler的回答。但是,我找不到任何适应匿名类型的方法。演员似乎不起作用 - 或者我只是没有线索(可能)。有人可以帮忙吗?

Dim test = context.persons.Where(Function (r) r.personActive).Select(Function (o) New With { _
                 .person = o, _
                 .events = o.events.Where( Function(e) e.eventDateTime > startdate) _
            })

            Dim Res = New ObservableCollection(Of person )

            For Each person In test
                Res.Add(person)
            Next

给我:

  

错误2类型'<匿名类型>的值(第53行)'无法转换为'PersonEntity.person'。 E:\ Dropbox \ Work Experimental \ PersonEntity- Copy \ PersonEntity \ personRepository.vb 61 29 PersonEntity

我已经对这段代码有了进一步的了解,但是我仍然无法获得附加的事件,因为我在演员时遇到了另一个错误。通用列表到ObservableList显然不会转换。回答我原来的问题似乎是一种令人难以置信的方式!

Dim test = context.persons.Where(Function(r) r.personActive).Select(Function(o) New With { _
                 .person = o, _
                 .events = o.events.Where(Function(e) e.eventDateTime > startdate) _
            })


            Dim Res = New ObservableCollection(Of person)

            For Each t In test
                Dim r As New person
                r = t.person
                r.events = t.events
                Res.Add(r)
            Next

            Return Res

1 个答案:

答案 0 :(得分:1)

Function(o) New With { _
         .person = o, _
         .events = o.events.Where(Function(e) e.eventDateTime > startdate) _
    }

这会返回匿名类型,而不是Person。您的意思是Addperson属性*?

For Each o In test
    Res.Add(o.person)
Next