2012-12-17 173 views
0

我很堅持這種匿名類型從LINQ業務。這是通過回答上一個問題的結果,但遺憾的是我沒有足夠的大腦力量來完成這項工作。匿名類型和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的\工作實驗\ PersonEntity-複製\ 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
Function(o) New With { _ 
     .person = o, _ 
     .events = o.events.Where(Function(e) e.eventDateTime > startdate) _ 
    } 

這將返回一個匿名類型,而不是一個Person。你的意思是Add它的person屬性*?

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

這是另一個問題的一部分,我剛剛設法解決另一個問題。謝謝。而你的權利:)這正是我必須做的。 –

+0

感謝您指出簡要的語法... –