2011-05-20 71 views
2

我有工會問題嚴謹轉換問題的LINQ到SQL與聯盟和期​​權上

我有我的LINQ查詢

Dim dc As New ContainerDB.DataClassesDataContext() 
    Dim test = (From container In dc.GetTable(Of tbl_container)() Where container.pkContainerID = iPkContainerID).Union(_ 
        From containerHist In dc.GetTable(Of tbl_containerHIST)() Where containerHist.pkContainerID = iPkContainerID) 

我總是得到隱式轉換錯誤

系統.Linq.IQueryable( ContainerDB.tbl_containerHIST) System.Collections.Generic.IEnumerable(Of ContainerDB.tbl_container)。

該查詢有什麼問題? 我錯過了什麼?

在此先感謝

回答

1

試圖把Option Infer On。這將允許使用的類型推斷,你似乎將要在這裏做什麼:

Dim test = 

編輯

此外,你需要使用anonymous types:,所以tbl_container和tbl_containerHIST可以進行比較:

Dim test = (From container In dc.GetTable(Of tbl_container)() 
      Where container.pkContainerID = iPkContainerID 
      Select New With{ ... }).Union(_ 
      From containerHist In dc.GetTable(Of tbl_containerHIST)() 
      Where containerHist.pkContainerID = iPkContainerID 
      Select New With{ ... }) 
+0

嗨Rewinder,thx爲您的輸入。但它不起作用。 _「System.Data.Linq.DataQuery'1 [ContainerDB.tbl_containerHIST]」不能轉換爲Typ「System.Collections.Generic.IEnumerable'1 [ContainerDB.tbl_container]」._ – SwissGuy 2011-05-20 10:56:45

+0

@SwissGuy:啊,這個問題似乎是tbl_containerHIST和tbl_container是兩種不同的類型。聯合的返回應該是IEnumerable(Of ContainerDB.tbl_container)。是否有可能將tbl_containerHIST轉換爲tbl_container? – 2011-05-20 11:37:39

+0

嘿rewinder,cointainerHIST只有1列刪除,更新。有沒有辦法訪問這個?同樣的錯誤爲:'Dim test =(從容器在dc.GetTable(的tbl_container)() 其中container.pkContainerID = iPkContainerID 選擇新的{.ContainerID = container.pkContainerID})。Union(_ From containerHist In dc .GetTable(Of tbl_containerHIST)() Where containerHist.pkContainerID = iPkContainerID Select {With {.ContainerID = containerHist.pkContainerID})' – SwissGuy 2011-05-23 08:37:27