我尝试保存“linq-object”然后添加where子句。这将构建但在第一行崩溃,错误如下。我可以看到匿名部分有两种类型,我尝试将其转换为其中一种。但是我该怎么做呢?
“无法转换类型为'System.Data.Linq.DataQuery
1[VB$AnonymousType_0
的对象2 [SubscriberContact,Subscriber]]''键入'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 :(得分: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相同。