2012-09-12 43 views
1

我嘗試保存一個「linq對象」,然後添加where子句。這將生成但第一行崩潰與下面的錯誤。我可以看到匿名部分有兩種類型,我嘗試將其僅投射到其中的一種。但是,我如何正確地做到這一點?保存linq變量添加更多where子句

「無法轉換類型的對象 'System.Data.Linq.DataQuery 1[VB$AnonymousType_0 2 [SubscriberContact,訂戶]]' 爲類型「System.Linq.IQueryable`1 [SubscriberContact]

Dim subscriberContacts As IQueryable(Of SubscriberContact) = 
      (From sc In GetTable(Of SubscriberContact)(), s In GetTable(Of Subscriber)() 
      Where sc.Subscriber.SubscriberId = s.SubscriberId) 


If Not searchCriteria.CustomerNo = Nothing Then 
    subscriberContacts = From sc In subscriberContacts 
         Where sc.Subscriber.CustomerNumber.Value = searchCriteria.CustomerNo() 
End If 

回答

0

如果你在將來的預測中需要這兩種類型,你可以在第一個查詢中使用類型推斷,如下所示,只要確保不要包含排序並將subscriberContacts分配給有序結果,因爲這樣會改變傳染類型。 ,請使用新的變量名稱。

Dim subscriberContacts = 
      (From sc In GetTable(Of SubscriberContact)(), s In GetTable(Of Subscriber)() 
      Where sc.Subscriber.SubscriberId = s.SubscriberId) 


If Not searchCriteria.CustomerNo = Nothing Then 
    subscriberContacts = From sc In subscriberContacts 
         Where sc.Subscriber.CustomerNumber.Value = searchCriteria.CustomerNo() 
End If 

回想起原來的問題,你真的需要在這裏加入嗎? sc.Subscriber對象與對象圖中的s相同。